提问者:小点点

错误ANDROID STUDIO E/RecyclerView:未附加适配器;跳过布局


我需要帮助,我有一个错误,那就是这个:E/recyclerView:没有连接适配器;跳过布局

代码:

公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){View View=inflater.inflate(r.layout.fragment_chats,container,false);

    recyclerView= view.findViewById(R.id.recycler_view);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

    fuser= FirebaseAuth.getInstance().getCurrentUser();

    usersList= new ArrayList<>();

    reference= FirebaseDatabase.getInstance().getReference("Chatlist").child(fuser.getUid());
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            usersList.clear();
            for(DataSnapshot snapshot : dataSnapshot.getChildren()){
                Chatlist chatlist= snapshot.getValue(Chatlist.class);
                usersList.add(chatlist);
            }

            chatList();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

    return view;
}

private void chatList() {
    mUsers = new ArrayList<>();
    reference= FirebaseDatabase.getInstance().getReference("Users");
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            mUsers.clear();
            for(DataSnapshot snapshot : dataSnapshot.getChildren()){
                User user= snapshot.getValue(User.class);
                for(Chatlist chatlist : usersList){
                    if(user.getId().equals(chatlist.getId())){
                        mUsers.add(user);
                    }
                }
            }
            userAdapter= new UserAdapter(getContext(), mUsers, true);
            recyclerView.setAdapter(userAdapter);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

}


共1个答案

匿名用户

请尝试以下方法:

  1. 在为RecyclerView设置LayoutManager的同时创建空适配器:将其另存为片段的字段:
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
userAdapter= new UserAdapter(getContext(), new ArraysList<>(), true);
recyclerView.setAdapter(userAdapter);
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
   /// origin code here

  // reset data in adapter and not re-creating adapter:
  userAdapter.setItems(mUsers);
  getActivity().runOnUiThread(() -> userAdapter.notifyDataSetChanged());
 // instead of userAdapter= new UserAdapter(getContext(), mUsers, true); recyclerView.setAdapter(userAdapter); 
}