Как я могу читать вложенные данные (хэш-карту) в базе данных Firebase RealTime - PullRequest
0 голосов
/ 07 мая 2020

Я следую этому учебнику и сохраняю несколько изображений в моей базе данных firebase:

enter image description here

Галерея - это хэш-карта, как я Можете прочитать эти данные?

Мой класс 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 в String

1 Ответ

0 голосов
/ 07 мая 2020

Это поле в вашем классе 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<String, String> сами.

...