gpt4 book ai didi

java - 未从 Firebase 获取完整数据

转载 作者:行者123 更新时间:2023-12-02 01:09:06 24 4
gpt4 key购买 nike

我在 Firebase 数据库中创建了一些用户及其子级,并且也填充了它,但是当我从数据库中读取数据时,它提供的数据不完整。我有一个数据库 > 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);

这是数据库的图像 Databse Image.

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

费用测试模型

package com.nkbw.expensemanager.test;

公共(public)类 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 个。为什么会这样呢? Here the image of database with values

最佳答案

试试这个

创建列表来存储所有数据

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

关于java - 未从 Firebase 获取完整数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59622381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com