【问题标题】:How can I read nested data (hashmap) in Firebase RealTime Database如何在 Firebase 实时数据库中读取嵌套数据(哈希图)
【发布时间】:2020-05-07 22:05:35
【问题描述】:

我跟随这个tutorial 并将多个图像保存到我的firebase数据库:

Gallery 是 hashmap,我如何读取这些数据?

我的 POJO 课:

public class Tasks {
String titletask, decriptiontask, datetask, keytask, imagetask;
HashMap<String,String> gallery;

当我尝试使用此代码时:

mRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

        for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren())
        {
            Tasks task = dataSnapshot1.getValue(Tasks.class);
            list.add(task);
        }
        adapter = new TasksAdapter(getActivity(),list);
        mRecyclerView.setAdapter(adapter);
        adapter.notifyDataSetChanged();
    }

我有一个错误:

将 java.util.HashMap 类型的值转换为字符串失败

【问题讨论】:

  • 如何初始化mRef
  • mRef = FirebaseDatabase.getInstance().getReference().child("TaskBox");
  • 看起来是正确的。在那种情况下,我很确定问题出在您的gallery 的结构中。我在下面回答。
  • 是的,你说得对,谢谢。我有这样的东西: Map gallery = tasks.get(position).getGallery();这会从图库中读取全部数据。我可以显示键和值,例如键:-M6doNe9UqYiqylvcv 和值:GalleryItem@9900,但我如何才能访问 ImgLink?感谢您的帮助

标签: java firebase firebase-realtime-database hashmap


【解决方案1】:

Tasks 类中的此字段:

HashMap<String,String> gallery;

会转换成这样的 JSON 结构:

"gallery": {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

由于这不是您拥有的结构,因此映射将失败。


要描述 JSON,您需要为每个图库项目定义一个类:

public class GalleryItem {
  public String ImgLink;
}

然后:

HashMap<String,GalleryItem> gallery;

或者,您也可以使用Object

HashMap<String,Object> gallery;

并且(如果这确实有效)将 gallery 映射中的值视为 Map&lt;String, String&gt; 本身。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    相关资源
    最近更新 更多