Как получить указанные c данные из Firebase Firestore и создать линейный график в Android? - PullRequest
0 голосов
/ 27 апреля 2020

Я относительно новичок в Android Studio, и мне было интересно, есть ли способ извлечь определенные данные из базы данных Firebase Firestore и представить эти данные в линейный график.

В данный момент Я создал базу данных, как вы можете видеть ниже: enter image description here

Все, что я хочу сделать, это показать количество глюкозы, которое является удвоенным в линейном графике.

Если кто-то может помочь мне, это будет очень ценно.

Ниже я показываю код, с которого я начал:

public class Chart extends AppCompatActivity {
    private FirebaseFirestore firestore = FirebaseFirestore.getInstance();
    private CollectionReference ref = (CollectionReference) firestore .collection("BGAndCarbohydrate");

    FirebaseAuth auth;

    String userID;

    GraphView graph;
    LineGraphSeries series;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_blood_glucose_chart);

        firebaseAuth = FirebaseAuth.getInstance();
        firebaseFirestore = FirebaseFirestore.getInstance();

        userID = firebaseAuth.getCurrentUser().getUid();

        graph = (GraphView) findViewById(R.id.graph);
        series = new LineGraphSeries();
        graph.addSeries(series);
    }
}

Большое спасибо.

1 Ответ

2 голосов
/ 27 апреля 2020

Если я правильно понимаю, вы хотите запросить документы в коллекции BDAndCarbohydrate, а затем нанести значение glucoseAmount на currentDateAndTime в виде линейного графика.

В этом случае сначала запросите документы отсортировано по currentDateAndTime, а затем проведите итерацию по результату, чтобы создать точки данных для каждого документа, а затем добавьте эти точки данных в свою серию.

List<DataPoint> datapoints = new ArrayList();

Query query = firestore.collection("BDAndCarbohydrate")
                            .orderBy("currentDateAndTime");

query.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                        @Override
                        public void onSuccess(QuerySnapshot querySnapshot) {
                            Log.i(TAG, "Successfully fetched data from firestore");

                            int index = 0;
                            for (QueryDocumentSnapshot document : querySnapshot.getResult()) {
                                Map data = document.getData();
                                Double glucoseAmount = data.get("glucoseAmount");

                                datapoints.add(new DataPoint(glucoseAmount, index));
                                index++;

                            }
                        }
                    });

//Add the datapoints to the series here..

Вы можете использовать где / startAfter / limit et c. в этом запросе, чтобы отфильтровать некоторые документы, если это необходимо.

Я не проверял этот код, поэтому предположим, что он является псевдокодом, и при необходимости измените его.

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