Вложенный RecyclerView с двумя FirestoreRecyclerAdapters - PullRequest
1 голос
/ 24 апреля 2020

Я хочу иметь вложенный RecyclerView, который заполняется с помощью двух FirestoreRecyclerAdapter с, которые собирают два разных запроса (responseOne и responseTwo) из Firestore.

В следующем сценарии короткими словами:

  1. firstRecyclerView -> заполняется FirestoreRecyclerAdapter<Post, PostHolder>
  2. secondRecyclerView (вложено в firstRecyclerView ) -> заполните FirestoreRecyclerAdapter<Comment, CommentHolder>

Вот мой код для этого сценария:

firstRecyclerView = rootView.findViewById(R.id.posts_list_recyclerview);
firstAdapter = new FirestoreRecyclerAdapter<Post, PostHolder>(repsonseOne) {
    @Override
    public void onBindViewHolder(@NonNull PostHolder holder, int position, @NonNull Post model) {
        holder.setPostText_to_UI(model.getText());
    }

    @NonNull
    @Override
    public PostHolder onCreateViewHolder(@NonNull ViewGroup group, int i) {
        View view = LayoutInflater.from(group.getContext())
                .inflate(R.layout.posts_item_cardview, group, false);


        secondRecyclerView = view.findViewById(R.id.comments_list_recyclerview);
        secondAdapter = new FirestoreRecyclerAdapter<Comment, CommentHolder>(repsonseTwo) {
            @Override
            protected void onBindViewHolder(@NonNull CommentHolder holder, int position, @NonNull Comment model) {
                holder.setAuthorDisplayName_to_UI(model.getAuthorUserId());
            }

            @NonNull
            @Override
            public CommentHolder onCreateViewHolder(@NonNull ViewGroup group, int viewType) {
                View view = LayoutInflater.from(view.getContext()).inflate(R.layout.posts_comments_item_cardview, group, false);
                return new CommentHolder(view);
            }
        };
        secondRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        secondRecyclerView.setItemAnimator(new DefaultItemAnimator());
        secondRecyclerView.setAdapter(secondAdapter);
        secondAdapter.notifyDataSetChanged();


        return new PostHolder(view);
    }
};
firstRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
firstRecyclerView.setItemAnimator(new DefaultItemAnimator());
firstRecyclerView.setAdapter(firstAdapter);
firstAdapter.notifyDataSetChanged();

firstRecyclerView работает хорошо без каких-либо проблем и показывает все данные.

Однако secondRecyclerView не инициализируется, и я увидел в Debug View, что эти два метода не были запущены кодом:

  • public CommentHolder onCreateViewHolder()
  • protected void onBindViewHolder(@NonNull CommentHolder holder, int position, @NonNull Comment model)

Что я могу сделать, чтобы запустить эти два FirestoreRecyclerAdapter?

...