繁体   English   中英

Graphview:将Arraylist显示为X轴标签

[英]Graphview : Display Arraylist as X axis label

我正在使用GraphView从Firebase数据库绘制数据。

这是我的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM