Android/Firebase - 如何将检索到的数据添加到 ArrayList

我在尝试这样做时遇到了一些问题,因为数据是异步加载的。


我有一个 recyclerView,我需要将数据推送到一个列表中,以便它可以被回收,在屏幕上显示信息,但事实证明这样做有点困难。


这就是我到现在为止得到的:


refQuestions.addChildEventListener(new ChildEventListener() {

            @Override

            public void onChildAdded(DataSnapshot dataSnapshot, String s) {

                Question question = dataSnapshot.getValue(Question.class);

                arrayList.add(question.title);

                Log.d("MyApp", question.title);

            }

我希望代码在这里“停止”,并且仅在数据完全加载到我的数组中后才继续执行,就像某种回调一样。


波斯汪
浏览 111回答 3
3回答

RISEBY

您可以使用addChildEventListener也可以使用addListenerForSingleValueEvent,如下面的代码所示:ValueEventListener valueEventListener = new ValueEventListener() {&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onDataChange(DataSnapshot dataSnapshot) {&nbsp; &nbsp; &nbsp; &nbsp; List<String> arrayList = new ArrayList<>();&nbsp; &nbsp; &nbsp; &nbsp; for(DataSnapshot ds : dataSnapshot.getChildren()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Question question = ds.getValue(Question.class);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; arrayList.add(question.title);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; //Do what you need to do with your arrayList&nbsp; &nbsp; }&nbsp; &nbsp; @Override&nbsp; &nbsp; public void onCancelled(@NonNull DatabaseError databaseError) {&nbsp; &nbsp; &nbsp; &nbsp; Log.d(TAG, databaseError.getMessage());&nbsp; &nbsp; }};refQuestions.addListenerForSingleValueEvent(valueEventListener);如您所见,快速解决此问题的方法是使用arrayListonly insideonDataChange()方法。如果你想在外面使用它,我建议你从这篇文章中查看我的 anwser 的最后一部分,其中我解释了如何使用自定义回调来完成它。您也可以观看此视频以更好地理解。

犯罪嫌疑人X

您可以使用 onDataChange 方法将获取的结果添加到数组列表中ref.addValueEventListener(new ValueEventListener() {@Overridepublic void onDataChange(DataSnapshot dataSnapshot) {&nbsp; &nbsp; for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {&nbsp; &nbsp; &nbsp; &nbsp; Question question = ds.getValue(Question.class);&nbsp; &nbsp; &nbsp; &nbsp; arrayList.add(question.title);&nbsp; &nbsp; }}});然后您可以轻松地在回收站视图中显示它们。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java