Извлечение данных в реальном времени из базы FireBase, у которой есть 2 дочерних элемента для 2 приложений в одной базе FireBase [Android] - PullRequest
0 голосов
/ 12 мая 2018

Я создаю 2 приложения для Android, для пользователя и для администратора. Пользовательское приложение может использовать "пеланггаран", приложение администратора может видеть весь пеланггаран в реальном времени. Здесь я застрял в получении данных в режиме реального времени для приложения администратора. Вот иерархия базы данных.

это ссылки: пеланггаран и пользователь

у каждого пользователя есть пеланггаран. Итак, первым потомком pelanggaran является userID, затем pelanggaranID, затем значения

Я попробовал поискать в Google, я понял, но это не в реальном времени Вот мой код

private void refreshList(){
    databaseUser = FirebaseDatabase.getInstance().getReference("User");
    pelanggaranList = new ArrayList<>();
    databaseUser.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            pelanggaranList.clear();
            long numberUsers = dataSnapshot.getChildrenCount();
            Log.w("total user", "" + numberUsers);

            for (DataSnapshot dsUser : dataSnapshot.getChildren()){
                User user = dsUser.getValue(User.class);
                final String userId = user.getUserId();
                Log.w("id user", userId);

                databasePelanggaran = FirebaseDatabase.getInstance().getReference("Pelanggaran").child(userId);
                databasePelanggaran.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot1) {
                        for (DataSnapshot dsPelanggaran : dataSnapshot1.getChildren()){
                            Pelanggaran pelanggaran = dsPelanggaran.getValue(Pelanggaran.class);
                            Log.w("id pelanggaran", userId + " : " + pelanggaran.getIdPelanggaran());
                            pelanggaranList.add(pelanggaran);
                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
            }
            PelanggaranAdapter pelanggaranAdapter = new PelanggaranAdapter(MainActivity.this, pelanggaranList);
            recyclerView.setAdapter(pelanggaranAdapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

Может принимать все значения от каждого пользователя, но не в режиме реального времени. И иногда данные не появляются. Что я должен сделать, чтобы сделать это в реальном времени?

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