Должны ли мы включать прослушиватель firebase в адаптер RecyclerView?

# #android #firebase #android-recyclerview

Вопрос:

В настоящее время у меня есть класс адаптера RecyclerView, который отображает список событий с их именем события и изображением пользователя хоста. Мне нужно использовать прослушиватель firebase, чтобы получить нужный хост (используя идентификатор пользователя хоста) для изображения их профиля, а затем поместить в каждый из элементов списка Просмотр изображений. Я пытаюсь избежать получения изображения профиля, вызывая прослушиватель firebase внутри RecyclerView, но я не смог придумать лучшей идеи для получения данных. Кто-нибудь может провести меня через это?

Ниже приведен класс адаптера RecyclerView, в котором прослушиватель firebase помещается в держатель onBindViewHolder

 @Override
protected void onBindViewHolder(@NonNull partyViewholder holder, int position, @NonNull Party model){
           getUser.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {
                    if(snapshot.exists()){
                        for (DataSnapshot datas : snapshot.getChildren()) {
                            try {
                                GlideApp.with(context).load(datas.child("uri").getValue(String.class))
                                        .placeholder(R.drawable.blank_picture)
                                        .into(holder.mUserImg);
                            }catch (Exception e){
                                Log.d("adapter", "onBindViewHolder: "  e.getMessage());
                            }
                        }
                    }else{
                        GlideApp.with(context).load(R.drawable.blank_picture)
                                .placeholder(R.drawable.blank_picture)
                                .into(holder.mUserImg);
                    }
                }
                @Override
                public void onCancelled(@NonNull DatabaseError error) {
                    Log.w("adapter", "Failed to read value.", error.toException());
                }
            });
}

 

Отредактированный:
структура огневой базы:

Данные о событиях Данные о событиях

Данные пользователя

Данные пользователя

Комментарии:

1. можете ли вы поделиться своей структурой базы данных ?

2. @50_Seconds_Of_Coding я только что обновил структуру, root/party.. и root/пользователи/обычные…

3. Что вы храните в RecyclerView и зачем вам нужен дополнительный слушатель?

4. Почему бы вам не собрать данные пользователя вместе с данными участника и не объединить их перед загрузкой данных в recyclerview?

5. Честно говоря, то, чего вы пытаетесь достичь, избегая одного дополнительного слушателя, — это ключ foregin и концепция joins из SQL. Но проблема с firebase в том, что они не предоставляют метод уровня API для того же самого.