2017-01-05 2 views
0

Я хотел бы подать заявку с PieChart. И я сделал два приложения. В одном все правильно. Но если скопировать код на второй, у менянесовместимые типы: ArrayList <Entry> не может быть преобразован в Список <PieEntry>

Error:(95, 48) error: incompatible types: ArrayList<Entry> cannot be converted to List<PieEntry> 

Это мой код из mainActivity в рабочем приложении:

public class MainActivity extends AppCompatActivity { 

    float zmienna = 123; 
    private static String TAG = "MainActivity"; 

    private float[] yData = {zmienna, 10.6f, 66.76f, 44.32f, 46.01f, 16.89f, 23.9f}; 

    PieChart pieChart; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Log.d(TAG, "onCreate: starting to create chart"); 

     pieChart = (PieChart) findViewById(R.id.graph); 

     pieChart.setRotationEnabled(true); 
     pieChart.setHoleRadius(25f); 
     pieChart.setTransparentCircleAlpha(0); 

     pieChart.setCenterTextSize(10); 

     addDataSet(); 

    } 

    private void addDataSet() { 
     Log.d(TAG, "addDataSet started"); 
     ArrayList<PieEntry> yEntrys = new ArrayList<>(); 

     for(int i = 0; i < yData.length; i++){ 
      yEntrys.add(new PieEntry(yData[i] , i)); 
     } 

     //create the data set 
     PieDataSet pieDataSet = new PieDataSet(yEntrys, "Employee Sales"); 
     pieDataSet.setSliceSpace(2); 
     pieDataSet.setValueTextSize(12); 

     //create pie data object 
     PieData pieData = new PieData(pieDataSet); 
     pieChart.setData(pieData); 
     pieChart.invalidate(); 
    } 
} 

На втором коде приложения является то же самое. Но ошибка в строке

PieDataSet pieDataSet = new PieDataSet(yEntrys, "Employee Sales"); 

И пишут:

Error:(95, 48) error: incompatible types: ArrayList<Entry> cannot be converted to List<PieEntry> 

Пожалуйста, помогите Потому что я не знаю. Что происходит с этим двумя приложениями.

+0

Можете ли вы показать нам, какая из них - линия 95? –

+0

Это, вероятно, дубликат [этого вопроса] (http://stackoverflow.com/q/2745265), но на данный момент трудно сказать. –

+0

PieDataSet pieDataSet = новый PieDataSet (yEntrys, «Sales Employee Sales»); –

ответ

0

Только что заметил, что блок кода является кодом рабочего кода.

вопрос вы испытываете «На втором приложении» является

yEntrys имеет тип ArrayList<Entry>, когда он ожидает List<PieEntry>. Попробуйте изменить yEntries на ArrayList<PieEntry> yEntrys = new ArrayList<>(); во втором приложении, и это должно решить вашу проблему.

Также см. docs для получения дополнительной информации.

Если нет, пожалуйста, выкладываю не работает активность

+0

О, Я не заметил, что он отправил код БЕЗ ошибки, а не код WITH с ошибкой. Отлично сработано. –

+0

Проблема в этом втором приложении - PieDataSet (java.util.List String) в PieDataSet не может быть применен к (java.util.List , String) –

0

Вы можете изменить конструктор PieDataSet так, что первый параметр имеет тип List<? extends Entry> вместо List<Entry>.

Если вы сделаете это, вы сможете передать ArrayList<Entry> или ArrayList<PieEntry>, и обе версии вашего приложения будут работать. Я, конечно, предполагаю, что PieEntry является подтипом Entry.

+0

Я думаю, что проблема заключается не в списке, но с PieDataSet (java.util.List , String) в PieDataSet не может быть применен к (java.util.List , String) –

+0

Yup. Вот почему я сказал «изменить конструктор для« PieDataSet » –

+0

, но я все еще не понимаю, почему в одном приложении этот код работает правильно, но во втором у меня проблемы с ним. Все одно и то же. И приложение не связано друг с другом –

 Смежные вопросы

  • Нет связанных вопросов^_^