如何在Android中绘制从Firebase数据库检索到的数据?

时间:2019-03-24 10:18:12

标签: android firebase firebase-realtime-database mpandroidchart android-graphview

我正在尝试使用数据库中存在的值在我的应用程序中绘制实时图形。我可以在TextView中显示更新后的值。同样,我将添加相同的参数,而不是添加具有不同ID(在firebase中自动分配)的值。例如,我要更新参数'temp',而不是每次要将数据发送到firebase时都将新子项添加到树中。我找不到有关如何在图形中绘制“温度”值的相关代码或建议。

我尝试使用GraphView教程和MpAndroidChart,但是它们都可以使用本教程(https://www.youtube.com/watch?v=d_96yv3Ppu4)中所示的数据库结构。我有一个类似[this](https://imgur.com/kWzbavZ)的结构。我无法在图表上得到任何提示。

这是我的绘图班。 Temp是我要绘制的值,lastX只是X轴变量。 Addentry()函数的行为series.appendData(new DataPoint(lastX, Double.parseDouble(temp)),true,10);,但由于该类中无法访问temp,所以将其删除。

 reff = FirebaseDatabase.getInstance().getReference().child("sensor");
        series = new LineGraphSeries<DataPoint>();
        reff.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                lastX++;
                String temp = dataSnapshot.child("temp").getValue().toString();
                int sajal = Integer.parseInt(temp);
                series.appendData(new DataPoint(lastX, Double.parseDouble(temp)),true,10);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
        GraphView graph = (GraphView) findViewById(R.id.temp_graph)
        graph.addSeries(series);

        Viewport viewport = graph.getViewport();
        viewport.setYAxisBoundsManual(true);
        viewport.setMinY(0);
        viewport.setMaxY(10);
        viewport.setScrollable(true);
@Override
    public void onResume() {
        super.onResume();
        // we're going to simulate real time with thread that append data to the graph
        new Thread(new Runnable() {

            @Override
            public void run() {
                // we add 100 new entries
                for (int i = 0; i < 100; i++) {
                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            addEntry();
                        }
                    });

                    // sleep to slow down the add of entries
                    try {
                        Thread.sleep(600);
                    } catch (InterruptedException e) {
                        // manage error ...
                    }
                }
            }
        }).start();
    }

    public void addEntry()  {
        // here, we choose to display max 10 points on the viewport and we scroll to end
    }

}

我想要绘制存储在参数'temp'中的值,但是现在得到的是一个空图。

0 个答案:

没有答案