我正在尝试使用数据库中存在的值在我的应用程序中绘制实时图形。我可以在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'中的值,但是现在得到的是一个空图。