以编程方式向饼图添加值 android

adding values to Pie Chart programmatically android

我正在使用 MP android 饼图 API 为我的 android 应用生成饼图。我按照一个 youtube 教程将详细信息静态添加到饼图并成功添加 代码:

public class EnergyBreakdown extends AppCompatActivity {
    PieChart pieChart;
    ArrayList<PieEntry> entries;
    ArrayList<String> PieEntryLabels;
    PieDataSet pieDataSet;
    PieData pieData;
    int LightDimmerLevel =2;
    int NumberofLights=5;
    int result;
    ArrayList<Integer> lightResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_energy_breakdown);

        pieChart=findViewById(R.id.piechart);
        entries=new ArrayList<>();
        PieEntryLabels = new ArrayList<String>();

        AddValuesToPIEENTRY();

        AddValuesToPieEntryLabels();

        pieDataSet = new PieDataSet(entries, "");

        pieData = new PieData(pieDataSet);

        pieDataSet.setColors(ColorTemplate.COLORFUL_COLORS);

        pieChart.setData(pieData);
        pieChart.setCenterText("Energy Breakdown");

        pieChart.animateY(3000);

    }
    public void AddValuesToPIEENTRY(){

        entries.add(new PieEntry(2f, 0));
        entries.add(new PieEntry(4f, 1));
        entries.add(new PieEntry(6f, 2));
        entries.add(new PieEntry(8f, 3));
        entries.add(new PieEntry(7f, 4));
        entries.add(new PieEntry(3f, 5));

    }

    public void AddValuesToPieEntryLabels(){

        PieEntryLabels.add("January");
        PieEntryLabels.add("February");
        PieEntryLabels.add("March");
        PieEntryLabels.add("April");
        PieEntryLabels.add("May");
        PieEntryLabels.add("June");

    }


}

我得到了这样的结果

但现在我想动态添加它,就像进行一些计算并将数据添加到饼图一样。我对代码做了一些更改,但它没有显示任何数据

public class EnergyBreakdown extends AppCompatActivity {
    PieChart pieChart;
    ArrayList<PieEntry> entries;
    ArrayList<String> PieEntryLabels;
    PieDataSet pieDataSet;
    PieData pieData;
    int LightDimmerLevel =2;
    int NumberofLights=2;
    int result;
    ArrayList<Integer> lightResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_energy_breakdown);

        pieChart=findViewById(R.id.piechart);
        entries=new ArrayList<>();
        PieEntryLabels = new ArrayList<String>();

        AddValuesToPIEENTRY();

        AddValuesToPieEntryLabels();

        pieDataSet = new PieDataSet(entries, "");

        pieData = new PieData(pieDataSet);

        pieDataSet.setColors(ColorTemplate.COLORFUL_COLORS);

        pieChart.setData(pieData);
        pieChart.setCenterText("Energy Breakdown");

        pieChart.animateY(3000);

    }
    public void AddValuesToPIEENTRY(){
        for (int i=0;i<NumberofLights+1;i++){
            result=((LightDimmerLevel)/(NumberofLights*5))*100;

            entries.add(new PieEntry(result));
        }
//       
    }

    public void AddValuesToPieEntryLabels(){

        PieEntryLabels.add("January");
        PieEntryLabels.add("February");
        PieEntryLabels.add("March");
        PieEntryLabels.add("April");
        PieEntryLabels.add("May");
        PieEntryLabels.add("June");

    }


}

任何人都可以帮助我哪里做错了以及我应该在哪里进行更改以动态地将数据动态添加到饼图

看你的静态数据,需要传递float类型的数据,把你的int变量改成float,第二个参数是循环索引

float LightDimmerLevel = 2;
float NumberofLights = 2;
float result;

...

public void AddValuesToPIEENTRY(){
     for (int i=0;i<NumberofLights+1;i++){
        result=((LightDimmerLevel)/(NumberofLights*5))*100;
        entries.add(new PieEntry(result, i));
     }     
}