Firestore значений документа в линейный график Android - PullRequest
0 голосов
/ 03 июля 2018

У меня есть коллекция с именем PuckData, в которой хранятся некоторые значения типа int (температура, свет) и метка времени. Я хотел бы отобразить эти значения в линейных графиках с помощью Android Graph Library (jjoe64). Первый график будет температурой (yAxis) -временная метка (xAxis), а второй будет световой меткой времени. Я хочу, чтобы значения меток времени отображались в следующем формате: дд: мм: гггг. В коде ниже я получаю значения температуры и света. Я хочу также получить значения меток времени.

firebaseFirestore.collection("PuckData").whereEqualTo("region", "Bedroom")
            .get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (DocumentSnapshot document : task.getResult()) {
                            int light = document.getLong("light").intValue();
                            int temperature = document.getLong("temperature").intValue();
                            Log.d("PUCK", "LIGHT: " + light);

                }
            } else {
                Log.d("PUCK", "Error getting documents: ", task.getException());
            }
        }
    });

Изображение коллекции PuckData Как можно добавить их в ArrayLists и передать как точки данных? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я также хочу получить метки времени.

Чтобы решить эту проблему, используйте следующий код:

Date date = document.getDate("timestamp");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yy");
String stringDate = simpleDateFormat.format(date);
Log.d("DATE", "timestamp: " + stringDate);

На выходе будет дата в формате dd/MM/yy.

Edit:

firebaseFirestore.collection("PuckData").whereEqualTo("region", "Bedroom")
            .get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                List<String> list = new ArrayList<>();
                for (DocumentSnapshot document : task.getResult()) {
                            int light = document.getLong("light").intValue();
                            int temperature = document.getLong("temperature").intValue();
                            Date date = document.getDate("timestamp");
                            SimpleDateFormat simpleDateFormat = new 
                            SimpleDateFormat("dd/MM/yy");
                            String stringDate = simpleDateFormat.format(date);
                            list.add(stringDate);
                            Log.d("DATE", "timestamp: " + stringDate);
                            Log.d("PUCK", "LIGHT: " + light);

                }
                Log.d("LIST", "list: " + list.toString());
            } else {
                Log.d("PUCK", "Error getting documents: ", task.getException());
            }
        }
    });
0 голосов
/ 03 июля 2018

Чтобы получить метку времени, используйте: -

Date lightTimestamp =  document.getDocument().getDate("light-timestamp");

И затем вы можете преобразовать эту дату в любой формат.

Добавление в arraylist: - Вы должны создать объект с этими тремя атрибутами. Укажите в них данные и передайте их в arraylist.

...