没有从 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();
}
});
我在 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();
}
});