Представление переработчика Firebase, отображение нескольких строк для одного элемента запроса

# #java #android #firebase #google-cloud-firestore

#Ява #Android #огневая база #google-облако-firestore

Вопрос:

В настоящее время я пытаюсь реализовать цикловый просмотр Firebaser. Мне всегда удавалось создать такой, чтобы отображать чат для моих пользователей. Но на этот раз моя архитектура данных немного отличается, и я не могу отобразить ее так, как хочу.

У меня есть модель с именем лобби, в которой есть поле «membersUid», содержащее список всех моих участников лобби

Во фрагменте, реализующем FirebaseRecyclerView, я использую следующий метод configureRecyclerView :

 // Configure RecyclerView private void configureRecyclerView(){  //Configure Adapter amp; RecyclerView  this.lobbyMemberAdapter = new LobbyMemberAdapter(  generateOptionsForAdapter(lobbyManager.getCurrentLobby()),  Glide.with(this), this);   lobbyMemberAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {  @Override  public void onItemRangeInserted(int positionStart, int itemCount) {  lobbyMembersRecyclerViewLinked.smoothScrollToPosition(lobbyMemberAdapter.getItemCount()); // Scroll to bottom on new messages  }  });   lobbyMembersRecyclerViewLinked.setLayoutManager(new LinearLayoutManager(getContext()));  lobbyMembersRecyclerViewLinked.setAdapter(this.lobbyMemberAdapter); }  

Я написал это, как в своем чате.

Здесь lobbyManager.getCurrentLobby() :

 public Query getCurrentLobby(){  return lobbyRepository.getCurrentLobby();  }  

И в моем хранилище в вестибюле :

 public Query getCurrentLobby(){  return this.getLobbyCollection().whereArrayContains("membersUid",userManager.getCurrentUser().getUid()).limit(1); }  

NB : Я использую ограничение(1), чтобы быть явным, но факт в том, что участник может одновременно находиться только в одном лобби (и обязательно иметь его), поэтому мой запрос всегда будет содержать один элемент.

После этого у меня есть адаптер и держатель просмотра, который может отображать один элемент моего лобби (например, у меня есть поле «владелец» только с одной строкой, представляющей идентификатор владельца).

Моя проблема заключается в следующем :

Я понимаю, как отобразить один элемент в одной строке для одного элемента запроса, потому что метод onBindViewHolder из адаптера будет вызываться один раз для каждого элемента запроса, но мне не удается создать несколько строк для одного элемента моего запроса (здесь по одному элементу в моем списке участников).

I would like, for example, to have a Query that point on the Lobby member list instead of the Lobby itself, and then change the line

 // Configure RecyclerView private void configureRecyclerView(){  //Configure Adapter amp; RecyclerView  this.lobbyMemberAdapter = new LobbyMemberAdapter(  generateOptionsForAdapter(lobbyManager.getCurrentLobby()),  Glide.with(this), this);  ...  

to

 // Configure RecyclerView private void configureRecyclerView(){  //Configure Adapter amp; RecyclerView  this.lobbyMemberAdapter = new LobbyMemberAdapter(  generateOptionsForAdapter(lobbyManager.getCurrentLobbyMemberUIDList()),  Glide.with(this), this);  ...  

Но кажется невозможным, чтобы запрос указывал на поле, если я хорошо понял …

Я надеюсь, что это описание достаточно четкое, не стесняйтесь спрашивать больше, если это необходимо,

Заранее спасибо всем читателям,