android - 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);
}
}
解决方案
正如您在评论中提到的:您已经定义了一个迭代器,但没有使用它。您只是向 ArrayList 添加了一个子项。您可以遍历每个孩子,将其添加到您的 ArrayList 中,如下所示:
ArrayList<String> objArrayList = new ArrayList<>();
for(DataSnapshot child : dataSnapshot.getChildren())
objArrayList.add(child.getValue(String.class));
推荐阅读
- hibernate - javax.servlet.ServletException:无法在名称为“NA-dispatcher”的 servlet 中解析名称为“login”的视图
- perl - 通过逐行读取该文件来计算文件中字符串出现的次数并打印行数
- xcode - 上传了我的应用,但它在构建选项卡或活动选项卡中不可见
- javascript - 内容和条件的 Screen.width 问题
- python - 按对象类型拆分包含对象的python列表
- regex - 如何从字符串中提取键和值
- slf4j - 跟踪 ID 和其他跟踪信息未出现在日志中
- vue.js - 在 vuetify 的计算属性中使用渲染函数
- mysql - 将日期时间字段发布到 MySQL 表?
- php - 如何在 yii2 activeForm 中保存多个收音机的值?