如何修复MpAndroidchart中计数的显示

kmpatx3s  于 2022-12-21  发布在  Android
关注(0)|答案(2)|浏览(120)

我遇到了一点麻烦,因为当我从firestore数据库中得到一个计数时,它显示的是25而不是1。我似乎无法解决这个问题。我认为它显示的是计数的1/4,因为当我试图只添加三个计数时,输出只显示33.33。
这是我的代码,我已经寻找方法来解决这个问题,但我似乎没有找到方法来解决它。

private void setPieChart() {
    pieChart.setDrawHoleEnabled(true);
    pieChart.setUsePercentValues(true);
    pieChart.setEntryLabelTextSize(12);
    pieChart.setEntryLabelColor(Color.BLACK);
    pieChart.setCenterTextSize(24);
    pieChart.getDescription().setEnabled(false);

    Legend l = pieChart.getLegend();
    l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP);
    l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT);
    l.setOrientation(Legend.LegendOrientation.VERTICAL);
    l.setDrawInside(false);
    l.setEnabled(true);
}
private void loadPiechartData() {
    entries = new ArrayList<>();
    db.collection("charot")
            .whereEqualTo("electricity", "lugi")
            .count()
            .get(AggregateSource.SERVER).addOnCompleteListener(task -> {
                entries.add(new PieEntry(task.getResult().getCount(), "lugi"));

                db.collection("charot")
                        .whereEqualTo("mahal", "bawi")
                        .count()
                        .get(AggregateSource.SERVER).addOnCompleteListener(task2 -> {
                            entries.add(new PieEntry(task2.getResult().getCount(), "bawi"));

                            db.collection("charot")
                                    .whereEqualTo("basta", "ewan")
                                    .count()
                                    .get(AggregateSource.SERVER).addOnCompleteListener(task3 -> {
                                    entries.add(newPieEntry(task2.getResult().getCount(),"ewan"));
                                        db.collection("charot")
                                                .whereEqualTo("tuiton", "pwede")
                                                .count()
                                    .get(AggregateSource.SERVER).addOnCompleteListener(task4-> {
                                 entries.add(new PieEntry(task4.getResult().getCount(), "pwede"));
                                                    if (task.isComplete()) {
                                                    ArrayList<Integer> colors = new ArrayList<>();
                                  for (int color : ColorTemplate.MATERIAL_COLORS) {
                                                            colors.add(color); }
                                  for (int color : ColorTemplate.VORDIPLOM_COLORS) {
                                                     colors.add(color); }
                                  PieDataSet dataSet = new PieDataSet(entries, "");
                                  dataSet.setColors(colors);
                                  PieData data = new PieData(dataSet);
                                  data.setValueFormatter(new ValueFormatter() {
                                  @Override
                                  public String getFormattedValue(float value) {
                                  return String.valueOf((int) value)}
                                  });
                                 data.setDrawValues(true);
                                 data.setValueTextSize(12f);
                                 data.setValueTextColor(Color.BLACK);
                                 pieChart.setData(data);
                                 pieChart.invalidate();
                                 pieChart.animateY(1000, Easing.EaseInOutQuad);
                                                    }
                                                });
                                    });
                        });
            });

我仍然掌握着图表的窍门,甚至我的团队也无法修复它。
这是我的数据库x1c 0d1x
这是输出

o0lyfsai

o0lyfsai1#

您在setPieChart()中调用pieChart.setUsePercentValues(true);,因此它显示的是百分比而不是实际值。如果您想看到值,请删除它或将其设置为false。

ulydmbyx

ulydmbyx2#

删除此行
设置使用百分比值(真);
也可以使用Tasks类代替嵌套查询。

相关问题