从 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中的firebase中检索List对象

Android:使用 ArrayList 从 Firebase 检索对象

如何使用 Firebase 实时数据库在不知道 Android 索引的情况下更新 ArrayList 中的元素?

检索子值 -firebase-

如何将 Url 从 Firebase Storage 存储到 ArrayList 中?