Не получают полные данные из Firebase - PullRequest
0 голосов
/ 07 января 2020

Я создал некоторых пользователей и их детей в базе данных Firebase, а также заполнил ее, но когда я читаю из базы данных, она дает мне неполные данные. У меня есть база данных> ExpenseManager> пользователь> расходы. Я получаю данные из расходов. Расходы содержат 3 повторяющихся значения непрерывно, у меня всего 10 записей, но при получении я получаю только 9 записей. Одно из трех повторяющихся значений отсутствует. Я использую для каждого l oop внутри childEventListener> onChildAdded ().

 database = FirebaseDatabase.getInstance();
    DatabaseReference myRef = database.getReference("ExpenseManager");

    mChildEventListener = new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            for(DataSnapshot dataSnapshots : dataSnapshot.getChildren()){

                expenseTestModelValues = (ExpenseTestModel) dataSnapshot.getValue(ExpenseTestModel.class);
                readValue.setText(expenseTestModelValues.getExpName()
                        +"\n "+expenseTestModelValues.getExpType()
                        +"\n "+expenseTestModelValues.getExpAmt()
                        +"\n "+expenseTestModelValues.getDate()
                        +"\n "+expenseTestModelValues.getMonth()
                        +"\n "+expenseTestModelValues.getYear());

            }


            Log.e(TAG,expenseTestModelValues.getExpName()
                    +"\n "+expenseTestModelValues.getExpType()
                    +"\n "+expenseTestModelValues.getExpAmt()
                    +"\n "+expenseTestModelValues.getDate()
                    +"\n "+expenseTestModelValues.getMonth()
                    +"\n "+expenseTestModelValues.getYear());

        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

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

        }
    };
    myRef.child(currentUser.getUid()).child("expenses").addChildEventListener(mChildEventListener);

Вот изображение базы данных Databse Image.

Журнал также печатает только 9 записей вместо 10. И если у меня все записи одинаковые, то при чтении из базы данных мне выдаются только 2 записи. Я пробовал ValueEventListener также. Но получаю ту же проблему. Пожалуйста, помогите! Последние три записи. Последняя секунда и последняя треть имеют одинаковые значения. поэтому я получаю только одну из последних вторых и третьих записей, а не обе. У меня всего 10 записей, а я получаю только 9. Почему это так. Here the image of database with values

1 Ответ

2 голосов
/ 07 января 2020

Попробуйте это

Создать список для хранения всех данных

   List<ExpenseTestModel> list=new ArrayList();

Теперь сохраняйте данные в списке

   myRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
           list.clear();
        for (DataSnapshot childDataSnapshot : dataSnapshot.getChildren()) {
         ExpenseTestModel     expenseTestModelValues = (ExpenseTestModel) dataSnapshot.getValue(ExpenseTestModel.class);
         list.add(expenseTestModelValues);
        }
     // Now  print size of list
    Log.e("list size",":"+list.size()); 
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...