首页 > 解决方案 > android firebase 迭代数据存储

问题描述

我们有一个非常扁平的 Firebase 数据结构,并且一直在尝试通过首先将 DB 加载到 HashMap 来将 DB 加载到 ArrayList 中。我们知道 ArrayList 的大小只有 1,所以这告诉我们我们没有获取所有数据。我们的问题是如何迭代数据存储?我们还使用了一个名为 UserInformation 的模型类

    db = FirebaseDatabase.getInstance().getReference(); 
    dbRef = db.child("Quiz Table");
    dbRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            Iterable<DataSnapshot> children = dataSnapshot.getChildren();

                //GenericTypeIndicator<HashMap<String, Object>> objT = new GenericTypeIndicator<HashMap<String, Object>>() {};
                String objHashMap = dataSnapshot.child(String.valueOf(X)).getValue(String.class);
                ArrayList<String> objArrayList = new ArrayList<>();
                objArrayList.add(String.valueOf(objHashMap));

                if (objArrayList != null) {

                    String question = objArrayList.get(0);
                    String ansone = objArrayList.get(0);
                    String anstwo = objArrayList.get(0);
                    String ansthree = objArrayList.get(0);
                    String ansfour = objArrayList.get(0);
                    String corans = objArrayList.get(0);
                    //etTableName.setText(pName);
                    etQuestion.setText(question);
                    etAnsOne.setText(ansone);
                    etAnsTwo.setText(anstwo);
                    etAnsThree.setText(ansthree);
                    etAnsFour.setText(ansfour);
                    etCorAns.setText(corans);
                }
            }

标签: androidfirebasefirebase-realtime-database

解决方案


正如您在评论中提到的:您已经定义了一个迭代器,但没有使用它。您只是向 ArrayList 添加了一个子项。您可以遍历每个孩子,将其添加到您的 ArrayList 中,如下所示:

ArrayList<String> objArrayList = new ArrayList<>();
for(DataSnapshot child : dataSnapshot.getChildren())
    objArrayList.add(child.getValue(String.class));

推荐阅读