gpt4 book ai didi

java - ArrayList的值在匿名内部类之外是不同的

转载 作者:行者123 更新时间:2023-12-02 10:44:39 31 4
gpt4 key购买 nike

我正在尝试从 FireBase 数据库填充 ArrayList。事件监听器内部 ArrayList 的大小实际上等于某个数字,但监听器外部的值为零。

问题数组大小的值应该大于零,因为我在其中添加元素。请帮我找出问题所在。因为我不断地尝试几个小时来解决这个问题。

ArrayList <Question> questions = new ArrayList<Question>();
int totalQuestCount =0;
FirebaseDatabase fDataBase;
DatabaseReference quizRef;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz_interface);

Log.d("QUESTION_SIZE1", String.valueOf(questions.size()));
fDataBase = FirebaseDatabase.getInstance();
quizRef = fDataBase.getReference("quizes/quiz1");
quizRef.keepSynced(true);
quizRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists() && dataSnapshot.hasChildren()){
totalQuestCount=(int)dataSnapshot.getChildrenCount();
questions.ensureCapacity(totalQuestCount);
Log.d("QuestionCount", String.valueOf(totalQuestCount));
for(DataSnapshot data: dataSnapshot.getChildren()){
questions.add(data.getValue(Question.class));
}
Log.d("QUESTION_SIZE2", String.valueOf(questions.size()));
}else{
Log.d("DATASNAP", "DOES NOT EXISTS");
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}

});
Log.d("QUESTION_SIZE3", String.valueOf(questions.size()));


}
}

最佳答案

在这个区 block

 for(DataSnapshot data: dataSnapshot.getChildren()){
questions.add(data.getValue(Question.class));
}

System.out.println(data.getValue(Question.class));

并检查您是否确实从 Firebase 获取数据并添加它。?

喜欢,

 for(DataSnapshot data: dataSnapshot.getChildren()){
System.out.println(data.getValue(Question.class));
questions.add(data.getValue(Question.class));
}

然后让我们知道。

关于java - ArrayList的值在匿名内部类之外是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52677533/

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