我们有一个非常扁平的firebase数据结构,并试图通过首先将数据库加载到哈希映射将数据库加载到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); } }
正如您在注释中提到的:您已经定义了一个迭代器,但没有使用它。你只需要在数组列表中添加一个子元素。您可以迭代每个子元素,将其添加到数组列表中,如下所示:
ArrayList<String> objArrayList = new ArrayList<>(); for(DataSnapshot child : dataSnapshot.getChildren()) objArrayList.add(child.getValue(String.class));