从 ArrayList 中的 Firebase 检索数据以获取图形
Posted
技术标签:
【中文标题】从 ArrayList 中的 Firebase 检索数据以获取图形【英文标题】:Retrive data from Firebase in ArrayList for graph 【发布时间】:2017-06-02 20:00:28 【问题描述】:我必须从 firebase 检索数据,并将其用于图表。我正在使用图形库。
我使用 addValueEventListener 来检索数据,它可以工作。 使用我的代码,应用程序崩溃并出现此错误:
一个或多个 DataSet Entry 数组比此 ChartData 对象的 x 值数组长。
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)
);
【问题讨论】:
LineData data = new LineData(labels, dataset);在这一行中,第一个参数应该是 ILineDataset 那么它是如何为你工作的呢? 【参考方案1】:如果您能告诉我们您使用哪个框架或库来创建图表,将会很有帮助。
从错误消息中猜测,我认为问题与 Firebase 无关,而在于您对 Chart API 的使用。在您的示例中,您的条目列表中有 2 个元素,但仅将一个标签添加到您的标签列表中。另一方面,API 似乎希望每个条目有一个标签,但这只是一个假设。
【讨论】:
以上是关于从 ArrayList 中的 Firebase 检索数据以获取图形的主要内容,如果未能解决你的问题,请参考以下文章
java 从Firebase中的Object获取ArrayList
Android:使用 ArrayList 从 Firebase 检索对象