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

时间:2019-12-02 02:07:26

标签: android mpandroidchart

我正在使用MP android Pie Chart 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");

    }


}

我得到了这样的结果 this result

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

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");

    }


}

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

1 个答案:

答案 0 :(得分:0)

通过查看静态数据,它需要传递浮点型数据,将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));
     }     
}