TestActivity.java
public class TestActivity extends AppCompatActivity {
private DatabaseReference fireBaseRef = ConfigurationFirebase.getFirebaseDatabase();
private Button buttonTest;
private Question question;
List<Question> questionsList = new ArrayList();
private String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_simulado);
generateQuestions();
buttonTest= findViewById(R.id.buttonTest);
buttonTest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(TestActivity.this, listaQuestion.get(0).getQuestion().toString(), Toast.LENGTH_LONG).show();
}
});
}
public List<Question> generateQuestions() {
DatabaseReference questionRef = fireBaseRef.child("questions");
questionRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
question = dataSnapshot.child("id").child("1").getValue(Question.class);
name = question.getQuestion().toString();
Question objectQuestion = new Question();
objectQuestion.setQuestion(name);
objectQuestion.setOptionA(question.getOptionA());
objectQuestion.setOptionB(question.getOptionB());
objectQuestion.setOptionC(question.getOptionC());
objectQuestion.setOptionD(question.getOptionD());
objectQuestion.setResult(question.getResult());
questionsList.add(objectQuestion);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
return questionsList;
}
}
当我尝试使用列表显示吐司但显示变量名称时,我不断收到错误java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
。问题类只有吸气剂和吸气剂
答案 0 :(得分:1)
之所以得到0,是因为在获取数据之前要返回列表,请参见firebase运行此异步操作,并且在onDataChange()中有一些时间来获取数据以返回数据。请阅读我昨天How do I pass data out of the onDataChange method?发布的这个答案。
也请检查Frank Van Puffelen getContactsFromFirebase() method return an empty list的答案