У меня есть диаграмма P ie, которая получает данные из Firebase Firestore, однако данные не принимаются немедленно, случается задержка более или менее на 2 секунды, и из-за этого на диаграмме не отображаются обновленные данные, как я могу сделать диаграмму для обновления, когда данные получены с успешным?
Это мой текущий код:
//Creation and fill data to PieChart
PieChart pieChart = root.findViewById(R.id.barragrafico);
PieDataSet pieDataSet = new PieDataSet(valoresGraf(),"");
int[] colorsArray = new int[]{Color.BLUE, Color.CYAN, Color.GREEN, Color.YELLOW, Color.DKGRAY, Color.RED, Color.BLACK};
pieDataSet.setColors(colorsArray);
PieData pieData = new PieData();
// pieChart.setBackgroundColor(Color.WHITE);
pieData.addDataSet(pieDataSet);
pieData.setValueTextColor(Color.MAGENTA);
pieChart.setEntryLabelColor(Color.WHITE);
pieChart.setEntryLabelTypeface(Typeface.DEFAULT_BOLD);
pieChart.getLegend().setTextColor(Color.WHITE);
pieChart.getLegend().setTypeface(Typeface.DEFAULT_BOLD);
pieChart.setEntryLabelTextSize(16f);
pieChart.getDescription().setTextSize(13f);
pieChart.getDescription().setTextColor(Color.WHITE);
pieChart.getDescription().setTypeface(Typeface.DEFAULT_BOLD);
pieChart.getDescription().setText("Dados Sincronizados\nOnline");
pieChart.setData(pieData);
//Method that fill Piechart with ArrayList
private ArrayList<PieEntry> valoresGraf(){
ArrayList<PieEntry> valores = new ArrayList<PieEntry>();
valores.add(0, new PieEntry(14, "Gado de corte"));
valores.add(1, new PieEntry(Float.parseFloat(valorCard.get(1)), "Novilha")); // This valorCard is received from the firebase firecloud previously, delay 2-3 segs to updated in valorCard arraylist.
valores.add(2, new PieEntry(20, "Suino"));
valores.add(3, new PieEntry(30, "Manejo"));
valores.add(4, new PieEntry(40, "Terra"));
valores.add(5, new PieEntry(50, "Extração"));
valores.add(6, new PieEntry(80, "Desempenho"));
return valores;
}
Я пытаюсь использовать его:
pieData.notifyDataChanged();
pieChart.setDrawHoleEnabled(false);
pieChart.notifyDataSetChanged();
pieChart.invalidate();
После всех дополнений, но не сработало.