Android PieData数据获取错误=新PieData(标签、数据集);在添加数据时
在我的应用程序中,需要使用MPAndroidChart的饼图,但在Piedata构造函数中添加数据时出错,请提供帮助。 使用依赖性编译'com.github.PhilJay:MPAndroidChart:v3.0.0 beta'Android PieData数据获取错误=新PieData(标签、数据集);在添加数据时,android,graph,charts,mpandroidchart,Android,Graph,Charts,Mpandroidchart,在我的应用程序中,需要使用MPAndroidChart的饼图,但在Piedata构造函数中添加数据时出错,请提供帮助。 使用依赖性编译'com.github.PhilJay:MPAndroidChart:v3.0.0 beta' imageView=(PieChart) v.findViewById(R.id.result_text); ArrayList<Entry> entries = new ArrayList<>(); entries.add(n
imageView=(PieChart) v.findViewById(R.id.result_text);
ArrayList<Entry> entries = new ArrayList<>();
entries.add(new Entry(4f, 0));
entries.add(new Entry(8f, 1));
entries.add(new Entry(6f, 2));
entries.add(new Entry(12f, 3));
entries.add(new Entry(18f, 4));
entries.add(new Entry(9f, 5));
PieDataSet dataset = new PieDataSet(entries,"uyggh");
ArrayList<Object> labels = new ArrayList<Object>();
labels.add("January");
labels.add("February");
labels.add("March");
labels.add("April");
labels.add("May");
labels.add("June");
PieData data = new PieData(labels, dataset);//getting error here
imageView.setData(data);
imageView.setDescription("Description");
imageView=(PieChart)v.findviewbyd(R.id.result\u text);
ArrayList条目=新的ArrayList();
条目。添加(新条目(4f,0));
增加(新条目(8f,1));
增加(新条目(6f,2));
增加(新条目(12f,3));
增加(新条目(18f,4));
增加(新条目(9f,5));
PieDataSet数据集=新的PieDataSet(条目,“维吾尔”);
ArrayList标签=新的ArrayList();
标签。添加(“一月”);
标签。添加(“二月”);
标签。添加(“三月”);
标签。添加(“四月”);
标签。添加(“可能”);
标签。添加(“六月”);
PieData=新的PieData(标签、数据集)//这里有错误
设置数据(数据);
imageView.setDescription(“说明”);
PieData
只接受一个参数,即PieDataSet
。因此,替换
PieData data = new PieData(labels, dataset);
与
有关更多详细信息,您可以查看官方示例。
希望,这个答案对你有帮助。当我使用dependency com.github.PhilJay:MPAndroidChart:v2.1.6'时 PieData接受两个参数,即String和PieDataSet。所以,我认为这是依赖性更新的问题。
使用较低的依赖性可以解决此问题。您应该像这样在PieEntry方法中传递标签。 它对我有用
private float[] yData = {25.3f,10.3f,66.3f,44.3f,16.3f,46.3f,23.3f};
private String[] xData = {"med","hamza","mohammed","","","",""};
for(int i = 0 ; i <yData.length;i++){
yEntrys.add(new PieEntry(yData[i],xData[i % xData.length]));
饼图
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Log.d(TAG, "Beach chart");
pieChart = (PieChart) findViewById(R.id.idPieChart);
//pieChart.setDescription(" Sales by employee In thousands $");
pieChart.setRotationEnabled(true);
pieChart.setHoleRadius(25f);
pieChart.setTransparentCircleAlpha(0);
pieChart.setCenterText("super cool chart");
pieChart.setCenterTextSize(10);
pieChart.setDrawEntryLabels(true);
addDataSet();
pieChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry e, Highlight h) {
Log.d(TAG, "onValueSelected: value selected from chart");
Log.d(TAG, "onValueSelected: "+ e.toString());
Log.d(TAG, "onValueSelected: "+ h.toString());
}
@Override
public void onNothingSelected() {
}
});
}
private void addDataSet() {
Log.d(TAG, "addDataSet: started");
ArrayList<PieEntry> yEntrys = new ArrayList<>();
ArrayList<String> xEntrys = new ArrayList<>();
for(int i = 0 ; i <yData.length;i++){
yEntrys.add(new PieEntry(yData[i],xData[i % xData.length]));
}
for(int i = 0 ; i <xData.length;i++){
xEntrys.add(xData[i]);
}
//create the DATA
PieDataSet pieDataSet = new PieDataSet(yEntrys,"Beachs");
pieDataSet.setSliceSpace(2);
pieDataSet.setValueTextSize(12);
//add colors to dataSet
ArrayList<Integer> colors = new ArrayList<>();
colors.add(Color.GRAY);
colors.add(Color.BLUE);
colors.add(Color.RED);
colors.add(Color.GREEN);
colors.add(Color.CYAN);
colors.add(Color.YELLOW);
colors.add(Color.MAGENTA);
pieDataSet.setColors(colors);
pieDataSet.setSliceSpace(25);
//add legend to chart
Legend legend = pieChart.getLegend();
legend.setForm(Legend.LegendForm.CIRCLE);
legend.setPosition(Legend.LegendPosition.LEFT_OF_CHART);
//create a pieData object
PieData pieData = new PieData(pieDataSet);
pieChart.setData(pieData);
pieChart.invalidate();
}
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
日志d(标签“海滩图”);
pieChart=(pieChart)findViewById(R.id.IDPichart);
//pieChart.setDescription(“按员工以千美元计的销售额”);
pieChart.setRotationEnabled(真);
赛托莱拉迪乌斯(25f);
pieChart.setTransparentCircleAlpha(0);
pieChart.setCenterText(“超级酷图表”);
pieChart.setCenterTextSize(10);
pieChart.setDrawEntryLabels(真);
addDataSet();
setOnChartValueSelectedListener(新的OnChartValueSelectedListener(){
@凌驾
选定的公共无效值(条目e,突出显示h){
d(标记“onValueSelected:从图表中选择的值”);
d(标记“onValueSelected:+e.toString());
Log.d(标记“onValueSelected:+h.toString());
}
@凌驾
不公开无效已选(){
}
});
}
私有void addDataSet(){
Log.d(标记“addDataSet:started”);
ArrayList yEntrys=新的ArrayList();
ArrayList xEntrys=新的ArrayList();
对于(int i=0;i您的ArryayList应该包含字符串,而不是对象:
ArrayList<String> labels = new ArrayList<String>();
....
PieData data = new PieData(labels, dataset);//getting error here
ArrayList标签=新建ArrayList();
....
PieData data=新PieData(标签、数据集);//此处获取错误
因为新的PieData需要ArrayList>根据与对应的最新文档,条目(Pie条目)现在将x和y值一起取
List<PieEntry> entries = new ArrayList<>();
entries.add(new PieEntry(18.5f, "Green"));
entries.add(new PieEntry(26.7f, "Yellow"));
entries.add(new PieEntry(24.0f, "Red"));
entries.add(new PieEntry(30.8f, "Blue"));
PieDataSet set = new PieDataSet(entries, "Election Results");
PieData data = new PieData(set);
pieChart.setData(data);
pieChart.invalidate(); // refresh
List entries=new ArrayList();
条目。添加(新条目(18.5f,“绿色”);
条目。添加(新条目(26.7f,“黄色”);
条目。添加(新条目(24.0f,“红色”);
条目。添加(新条目(30.8f,“蓝色”);
PieDataSet集=新的PieDataSet(条目,“选举结果”);
PieData数据=新的PieData(集合);
pieChart.setData(数据);
pieChart.invalidate();//刷新
因此,与其降低depandency,不如使用更新的代码。这就是我所说的关于参数的内容。我本来希望提供相同的解决方案,但我发现这与我使用的解决方案相同。这是itPieData仅支持一个数据集吗?
ArrayList<String> labels = new ArrayList<String>();
....
PieData data = new PieData(labels, dataset);//getting error here
List<PieEntry> entries = new ArrayList<>();
entries.add(new PieEntry(18.5f, "Green"));
entries.add(new PieEntry(26.7f, "Yellow"));
entries.add(new PieEntry(24.0f, "Red"));
entries.add(new PieEntry(30.8f, "Blue"));
PieDataSet set = new PieDataSet(entries, "Election Results");
PieData data = new PieData(set);
pieChart.setData(data);
pieChart.invalidate(); // refresh