我的日志可以打印所有Exercise
个对象。但是当我打电话时,listExercise
为空。问题是什么?
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
Exercise exercise = postSnapshot.getValue(Exercise.class);
String temp = exercise.toString();
Log.d("exercise: ", temp + "\n"); // can log all
listExercises.add(exercise);
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
Log.d("The read failed: ", firebaseError.getMessage());
}
});
Log.d("LISTSIZE: ", String.valueOf(listExercises.size())); // return 0
[更新]任何人都需要答案:
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
Exercise exercise = postSnapshot.getValue(Exercise.class);
listExercises.add(exercise);
}
// action with data here
Exercise ex = listExercises.get(0);
tvQuestion.setText(ex.getQuestion);
}
答案 0 :(得分:3)
当方法" paintListInScreen"被调用,你知道列表中有一些内容(或者可能不是,这取决于服务器,但你与线程一致)。
{{1}}
答案 1 :(得分:0)
对于Java 8及更新的版本(需要Android API Level 24):
int size = dataSnapshot.getChildren().spliterator().getExactSizeIfKnown() ;
旧版本:
int size = 0
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
size++ ;
}
答案 2 :(得分:0)
要获取datasnapshot对象的大小:
dataSnapshot.getChildrenCount();