Android PieData数据获取错误=新PieData(标签、数据集);在添加数据时

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

在我的应用程序中,需要使用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(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