FirebaseRecyclerviewAdapter 中的 recyclerview 转了很长时间,但只写了一个

recyclerview in FirebaseRecyclerviewAdapter turn all longth but write just one

我在 FRA 中有一个常规的 RecyclerView,我在 onbindviewholder class 中设置了它。正如您在应用程序中看到的那样,转长有一个 space 用于所有项目,通常我应该在那里看到回复文本,但只有一个人可以看到。

dbreply.child(post_key).addValueEventListener(new ValueEventListener() {
                 @Override
                 public void onDataChange(@NonNull DataSnapshot snapshot) {
                     for (DataSnapshot ds:snapshot.getChildren()) {
                         for (DataSnapshot snapshot1:ds.getChildren()) {
                             reply data = snapshot1.getValue(reply.class);
                             list.add(data);
                      
                             holder.rcv.setLayoutManager(new LinearLayoutManager(getContext()));
                             myAdapter = new MyAdapter(getContext(), list);
                             holder.rcv.setAdapter(myAdapter);
                             myAdapter.notifyDataSetChanged();

                        }
                     }

                             @Override
                             public void onCancelled(@NonNull DatabaseError error) { }});

您之所以会出现这种行为,是因为在内循环的每次迭代中都创建了 MyAdapter 的新实例。您应该将所有这 4 行代码从循环中取出,如下所示:

for (DataSnapshot ds:snapshot.getChildren()) {
    for (DataSnapshot snapshot1:ds.getChildren()) {
        reply data = snapshot1.getValue(reply.class);
        list.add(data);
    }
    holder.rcv.setLayoutManager(new LinearLayoutManager(getContext()));
    myAdapter = new MyAdapter(getContext(), list);
    holder.rcv.setAdapter(myAdapter);
    myAdapter.notifyDataSetChanged();
}