没有从 Firebase 获取完整数据

Not Getting Complete Data from Firebase

我在 Firebase 数据库中创建了一些用户和他们的 children,我也填充了它,但是当我从数据库中读取时,它给我的数据不完整。我有一个 数据库 > ExpenseManager > 用户 > 费用。我正在从费用中检索数据。费用连续包含 3 个重复值,我总共有 10 个条目,但是当我检索时,我只得到 9 个条目。缺少三个重复值之一。我在 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);

这是数据库的图像

日志也只打印了 9 个条目,而不是 10 个。 如果我的所有条目都相同,那么当我从数据库中读取时它只会给我 2 个条目。 我也尝试过 ValueEventListener。但是遇到同样的问题。 请帮助!!!

ExpenseTestModel

package com.nkbw.expensemanager.test;

public class ExpenseTestModel {

String date;
String month;
String year;
String expName;
String expType;

public ExpenseTestModel() {

}

public ExpenseTestModel(String date, String month, String year, String expName, String expType, String expAmt) {
    this.date = date;
    this.month = month;
    this.year = year;
    this.expName = expName;
    this.expType = expType;
    this.expAmt = expAmt;
}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

public String getMonth() {
    return month;
}

public void setMonth(String month) {
    this.month = month;
}

public String getYear() {
    return year;
}

public void setYear(String year) {
    this.year = year;
}

public String getExpName() {
    return expName;
}

public void setExpName(String expName) {
    this.expName = expName;
}

public String getExpType() {
    return expType;
}

public void setExpType(String expType) {
    this.expType = expType;
}

public String getExpAmt() {
    return expAmt;
}

public void setExpAmt(String expAmt) {
    this.expAmt = expAmt;
}

String expAmt;

}

这是最后三个条目的图像。最后第二个和最后三分之一具有相同的值。所以我只得到了最后的第二个和第三个条目之一,而不是两个。 我总共有 10 个条目,但我只得到 9 个。为什么会这样。

试试这个

创建列表来存储所有数据

   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();
    }
});