ОШИБКА ANDROID STUDIO E / RecyclerView: Адаптер не подключен;пропускающий макет - PullRequest
0 голосов
/ 05 октября 2019

Мне нужна помощь, у меня ошибка: E / RecyclerView: адаптер не подключен;пропускающий макет

КОД:

public View onCreateView (инфлятор LayoutInflater, контейнер ViewGroup, Bundle saveInstanceState) {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) {

        }
    });
}

}

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

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

0 голосов
/ 05 октября 2019

Попробуйте придерживаться подхода:

  1. Создайте пустой адаптер в то же время, когда вы устанавливаете LayoutManager для RecyclerView: сохраните его как поле вашего фрагмента:
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); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...