我试图使用firebase中存储的数据的任何图表,我添加了一个微调器来过滤我使用log.e
的数据,以了解我的数据是否发生了变化,我得出结论,数据变化很好,但问题是我的饼图没有用新数据更新,这是我的代码
protected void onStart() {
super.onStart();
spinner = (Spinner) findViewById(R.id.spinner2);``
anyChartView= (AnyChartView)findViewById(R.id.chart11);
pie= AnyChart.pie();
dataEntries=new ArrayList<>();
dataEntries.clear();
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, final int position, long id) {
ref3.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String s2;
dataEntries.clear();
for (int i=0;i<list2.size();i++){
s2=dataSnapshot.child(list2.get(i)).child("category").getValue(String.class);
s=spinner.getItemAtPosition(position).toString();
Log.e(TAG, "onDataChange: s &&& s2"+s+" "+s2 );
if (s.equals(s2)){
dataEntries.add(new ValueDataEntry(list2.get(i),Integer.parseInt(dataSnapshot.child(list2.get(i)).child("count").getValue(String.class))));
Log.e(TAG, "onDataChange: data"+list2.get(i)+" "+ dataSnapshot.child(list2.get(i)).child("count").getValue(String.class));
}else continue;}
Log.e(TAG, "onDataChange: size"+dataEntries.size() );
anyChartView= (AnyChartView)findViewById(R.id.chart11);
pie= AnyChart.pie();
pie.data(dataEntries);
anyChartView.setChart(pie);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
要更新饼图,只需将新数据应用于现有饼图并使其处于活动状态。没有必要重新创建图表或其他内容。有关详细信息,请查看GitHub页面上的代码片段的解释。