Android折线图
Android Line Chart
我正在尝试使用来自 Firebase 实时数据库的数据在 Android 中制作折线图。
这是数据库的结构:
enter image description here
这是代码:
public class TemperaturaActivity extends AppCompatActivity {
private LineChart Temp_linechart;
ArrayList<Entry> yData;
ValueEventListener valueEventListener;
DatabaseReference mPostReference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_temperatura);
Temp_linechart = (LineChart) findViewById(R.id.linechart1);
mPostReference = FirebaseDatabase.getInstance().getReference("dht");
mPostReference.addValueEventListener(valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
yData = new ArrayList<>();
float i = 0;
for (DataSnapshot ds : dataSnapshot.getChildren()) {
i = i + 1;
String SV = ds.child("temp").getValue().toString();
Float SensorValue = Float.parseFloat(SV);
yData.add(new Entry(i, SensorValue));
}
final LineDataSet lineDataSet = new LineDataSet(yData, "Temp");
lineDataSet.setLineWidth(4);
LineData lineData = new LineData(lineDataSet);
Temp_linechart.clear();
Temp_linechart.setData(lineData);
//Temp_linechart.notifyDataSetChanged();
Temp_linechart.invalidate();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
我的折线图中没有收到任何数据,我不知道为什么。
要获取 temp
属性 的值,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference dhtRef = rootRef.child("sensor").child("dht");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
double temp = ds.child("temp").getValue(Double.class);
Log.d("TAG", name);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
dhtRef.addListenerForSingleValueEvent(valueEventListener);
logcat 中的结果将是 temp
属性 的值:
32.7
32.7
32.7
我不熟悉折线图库,但现在有了这些值,您可以随心所欲地使用它们。
P.S。始终添加对引用中存在的所有节点的调用,包括对 .child("sensor")
.
的调用
我正在尝试使用来自 Firebase 实时数据库的数据在 Android 中制作折线图。
这是数据库的结构:
enter image description here
这是代码:
public class TemperaturaActivity extends AppCompatActivity {
private LineChart Temp_linechart;
ArrayList<Entry> yData;
ValueEventListener valueEventListener;
DatabaseReference mPostReference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_temperatura);
Temp_linechart = (LineChart) findViewById(R.id.linechart1);
mPostReference = FirebaseDatabase.getInstance().getReference("dht");
mPostReference.addValueEventListener(valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
yData = new ArrayList<>();
float i = 0;
for (DataSnapshot ds : dataSnapshot.getChildren()) {
i = i + 1;
String SV = ds.child("temp").getValue().toString();
Float SensorValue = Float.parseFloat(SV);
yData.add(new Entry(i, SensorValue));
}
final LineDataSet lineDataSet = new LineDataSet(yData, "Temp");
lineDataSet.setLineWidth(4);
LineData lineData = new LineData(lineDataSet);
Temp_linechart.clear();
Temp_linechart.setData(lineData);
//Temp_linechart.notifyDataSetChanged();
Temp_linechart.invalidate();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
我的折线图中没有收到任何数据,我不知道为什么。
要获取 temp
属性 的值,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference dhtRef = rootRef.child("sensor").child("dht");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
double temp = ds.child("temp").getValue(Double.class);
Log.d("TAG", name);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
dhtRef.addListenerForSingleValueEvent(valueEventListener);
logcat 中的结果将是 temp
属性 的值:
32.7
32.7
32.7
我不熟悉折线图库,但现在有了这些值,您可以随心所欲地使用它们。
P.S。始终添加对引用中存在的所有节点的调用,包括对 .child("sensor")
.