Я должен извлечь данные из firebase и использовать их в графике. Я использую библиотеку для графика.Извлечь данные из Firebase в ArrayList для графа
Я использую addValueEventListener для извлечения данных, и он работает. С моим кодом приложением аварии с этой ошибкой:
One or more of the DataSet Entry arrays are longer than the x-values array of this ChartData object.
детали в firebase являются 2, чем список массива метки не заполняются данными из firebase. Я не знаю своей ошибки.
Как я могу исправить свой код и подключить данные в arraylist?
DatabaseReference mPostReference = FirebaseDatabase.getInstance().getReference().child("user-specialita").child(getUid()).child(mPostKey).child("content");
mPostReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get Specialita object and use the values to update the UI
Specialita_2 specialita = dataSnapshot.getValue(Specialita_2.class);
// [START_EXCLUDE]
LineChart lineChart = (LineChart) findViewById(R.id.chart);
ArrayList<Entry> entries = new ArrayList<>();
entries.add(new Entry(4f, 0));
entries.add(new Entry(8f, 1));
//entries.add(new Entry(6f, 2));
//entries.add(new Entry(2f, 3));
// entries.add(new Entry(18f, 4));
// entries.add(new Entry(9f, 5));
LineDataSet dataset = new LineDataSet(entries, "# of Calls");
ArrayList<String> labels = new ArrayList<String>();
labels.add(specialita.title);
LineData data = new LineData(labels, dataset);
dataset.setColors(ColorTemplate.COLORFUL_COLORS); //
dataset.setDrawCubic(true);
dataset.setDrawFilled(true);
lineChart.setData(data);
lineChart.animateY(5000);
Toast.makeText(Alpha.this,"success",
Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(DatabaseError firebaseError) {
}
});
РЕДАКТИРОВАТЬ раствором
DatabaseReference mPostReference = FirebaseDatabase.getInstance().getReference().child("user-specialita").child(getUid()).child(mPostKey).child("content");
mPostReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
LineChart lineChart = (LineChart) findViewById(R.id.chart);
ArrayList<Entry> entries = new ArrayList<>();
// entries.add(new Entry(4, 0));
// entries.add(new Entry(8f, 1));
//entries.add(new Entry(6f, 2));
//entries.add(new Entry(2f, 3));
// entries.add(new Entry(18f, 4));
// entries.add(new Entry(9f, 5));
LineDataSet dataset = new LineDataSet(entries, "# of Calls");
final ArrayList<String> labels = new ArrayList<String>();
labels.clear();
for (DataSnapshot data : dataSnapshot.getChildren()){
Specialita_2 specialita = data.getValue(Specialita_2.class);
labels.add(specialita.title);
}
LineData data = new LineData(labels, dataset);
dataset.setColors(ColorTemplate.COLORFUL_COLORS); //
dataset.setDrawCubic(true);
dataset.setDrawFilled(true);
lineChart.setData(data);
lineChart.animateY(5000);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(Alpha.this,"error",
Toast.LENGTH_SHORT).show();
}
});
Благодарим за ответ! Я решаю это. я редактирую свой вопрос с помощью нового кода – hulon