Android 从Firebase数据库获取信息
我正在尝试从firebase实时数据库中检索数据。我有这样的结构: 现在我试着这样查询它:Android 从Firebase数据库获取信息,android,arrays,firebase,firebase-realtime-database,nullpointerexception,Android,Arrays,Firebase,Firebase Realtime Database,Nullpointerexception,我正在尝试从firebase实时数据库中检索数据。我有这样的结构: 现在我试着这样查询它: private void firebaseListView(){ Query query = FirebaseDatabase.getInstance().getReference() .child("expenses") .child(mAuth.getCurrentUser().getUid()) .orderByVa
private void firebaseListView(){
Query query = FirebaseDatabase.getInstance().getReference()
.child("expenses")
.child(mAuth.getCurrentUser().getUid())
.orderByValue();
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Expenses expenses = dataSnapshot.getValue(Expenses.class);
mExpenseList.add(expenses);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private long id;
private String name;
private double value;
private String category;
private String date;
private String location;
private long category_id;
private String firebase_id;
MEExpenseList
是类Expenses
看起来是这样的:
private void firebaseListView(){
Query query = FirebaseDatabase.getInstance().getReference()
.child("expenses")
.child(mAuth.getCurrentUser().getUid())
.orderByValue();
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Expenses expenses = dataSnapshot.getValue(Expenses.class);
mExpenseList.add(expenses);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private long id;
private String name;
private double value;
private String category;
private String date;
private String location;
private long category_id;
private String firebase_id;
当我运行调试器时,我从数据库中获取信息,但它显示:
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“boolean java.util.ArrayList.add(java.lang.Object)”
如何修复此问题?您遇到此错误是因为您试图将类型为
Expenses
class的对象添加到从未初始化过的列表中。要解决此问题,只需创建meexpenselist
变量作为全局变量:
private List<Expenses> mExpenseList;
就这样 查询中的.orderByValue()
没有意义,但这不是崩溃的原因。这似乎只是因为您没有在任何地方初始化meexpenselist
。