[英]Graphview : Display Arraylist as X axis label
我正在使用GraphView从Firebase数据库绘制数据。
我要实现的是将tmpHr显示为y值,并将Timestamp作为x轴的标签。 我已经从firebase检索了数据,并且已经在y轴上成功绘制了tmpHr。 我尝试了下面的方法,但是不起作用。 我怎样才能正确地做到这一点?
任何帮助,将不胜感激。 非常感谢你。
public class RetrieveApp extends AppCompatActivity {
FirebaseAuth auth;
FirebaseUser user;
int hrValue;
String hrValueTimestamp;
ArrayList<Integer> array2; //array for tmpHr value
ArrayList<String> array7; //array for hrValueTimestamp
LineGraphSeries<DataPoint> series ;
int x=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_retrieve_app);
DatabaseReference userdatabase = FirebaseDatabase.getInstance().getReference().child("Users");
auth = FirebaseAuth.getInstance();
user = auth.getCurrentUser();
final GraphView graph = (GraphView)findViewById(R.id.graph);
series = new LineGraphSeries<>();
graph.addSeries(series);
DatabaseReference ref = userdatabase.child(user.getUid());
array2 = new ArrayList<>(); //array for tmpHR
array7 = new ArrayList<>(); //array for hrValueTimestamp
ref.child("hrvalue").child("nilaihr").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
hrValue = dataSnapshot.child("tmpHR").getValue(Integer.class);
hrValueTimestamp = dataSnapshot.child("Timestamp").getValue(String.class);
Log.i("timestamp value", "timestamp value " + hrValueTimestamp);
Log.i("hr value", "hr value " + hrValue);
array2.add(hrValue);
array7.add(hrValueTimestamp);
x = x+1;
DataPoint point = new DataPoint(x, hrValue);
series.appendData(point, false, 1000);
graph.setCustomLabelFormatter(new CustomLabelFormatter() {
@Override
public String formatLabel(double value, boolean isValueX) {
if (isValueX) {
return (hrValueTimestamp);
}
return null;
}
});
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
您可以使用静态标签格式化程序执行此操作:
StaticLabelsFormatter staticLabelsFormatter = new StaticLabelsFormatter(graph);
staticLabelsFormatter.setHorizontalLabels(array7); // <- array with you labels
graph.getGridLabelRenderer().setLabelFormatter(staticLabelsFormatter);
由于标签很长,因此您可能需要为它们设置一个角度,以使它们不重叠:
graph.getGridLabelRenderer().setHorizontalLabelsAngle(135);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.