Чтение нескольких значений из Firebase и размещение в линейном графике - PullRequest
0 голосов
/ 06 июня 2018

База данных Firebase

В моей базе данных Firebase хранятся результаты тестов, как показано на связанном изображении.Я хочу прочитать все проценты в моем приложении для Android и отобразить их в виде графика.Я могу успешно прочитать одно значение из базы данных, но изо всех сил стараюсь отображать данные в реальном времени на графике.

Может кто-нибудь помочь.Мой попытанный код ниже, что мне делать.

subjectRadar находится над именем пользователя в базе данных.

    DatabaseReference radar = myRef.child("subjectRadar");



    radar.child(username).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            GraphView graph = (GraphView) findViewById(R.id.graph);
            DataSnapshot ds: dataSnapshot.getChildren();
            Double name = (Double) ds.child("mathematics").getValue();
            Float i = name.floatValue();
            Double name1 = (Double) ds.child("english").getValue();
            Float i1 = name1.floatValue();
            Double name2 = (Double) ds.child("history").getValue();
            Float i2 = name2.floatValue();
            Double name3 = (Double) ds.child("geography").getValue();
            Float i3 = name3.floatValue();



            LineGraphSeries<DataPoint> series = new LineGraphSeries<>(new DataPoint[] {




                    new DataPoint(1, i),
                    new DataPoint(2, i1),
                    new DataPoint(3, i2),
                    new DataPoint(3, i3)


            });
            graph.addSeries(series);
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

1 Ответ

0 голосов
/ 07 июня 2018

Вы должны использовать HashMap для этого.

Вставьте ваши данные в базу данных следующим образом:

HashMap subjects = new HashMap<String, Float>();
subjects.put("mathmatics", 1.3f);
subjects.put("english", 2.3f);
radar.child(username).setValue(subjects); //I think radar.child(username) is you Reference

Затем вы можете получить свои данные следующим образом:

radar.child(username).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            HashMap<String, Float> subjects  = (HashMap<String, Float>) dataSnapshot.getValue();

            int i = 0;
            Iterator it = subjects.entrySet().iterator();
            while (it.hasNext()) {
                i++;
                Map.Entry pair = (Map.Entry)it.next();
                new DataPoint(i, pair.getValue());
                //Add this DataPoint to your Graph
            }
        }

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

        }
    });

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...