【问题标题】:Problem to add an object from firebase in a List [duplicate]在列表中添加来自firebase的对象的问题[重复]
【发布时间】:2019-02-21 22:15:22
【问题描述】:

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,但它显示的是变量名。类 Question 只有 getter 和 setter

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    您得到 0 是因为您在获取数据之前返回列表,请注意 firebase 会异步运行此操作,并且它会在 onDataChange() 中获取一些时间来获取数据以返回它。请阅读我昨天发布的这个答案 How do I pass data out of the onDataChange method? 是同样的问题。

    另外请查看 Frank van Puffelen getContactsFromFirebase() method return an empty list的这个答案

    【讨论】:

    • 感谢您的帮助,抱歉重复的问题,我想我在论坛中找错了方向
    • 没问题,卢卡斯,我们在这里为您提供帮助并协助您满足您的需求
    猜你喜欢
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    相关资源
    最近更新 更多