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

Posted

技术标签:

【中文标题】错误 ANDROID STUDIO E/RecyclerView:未连接适配器;跳过布局【英文标题】:ERROR ANDROID STUDIO E/RecyclerView: No adapter attached; skipping layout 【发布时间】:2020-02-03 16:41:59 【问题描述】:

我需要帮助,我有一个错误,那就是:E/RecyclerView: No adapter attach;跳过布局

代码:

public View onCreateView(LayoutInflater inflater, ViewGroup 容器, 捆绑保存的InstanceState) 查看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】:

我要争辩的是,您可以简单地忽略警告,仅此而已。当您有一些数据要显示时,您的回收器适配器会被创建并应用于 RecyclerView。

【讨论】:

是的,通过忽略提到的错误它工作正常。但是忽略这个错误和这样的错误是真的吗?? 我可以添加到上述答案中的是,我的代码库中有一些地方有时确实会出现此警告,我对此很好。例如,当在活动中调用 onCreate() 时,适配器尚未设置,但之后我观察到 LiveData 实例,然后适配器被设置为 RecyclerView。【参考方案2】:

尝试遵循该方法:

    在为 RecyclerView 设置 LayoutManager 的同时创建一个空适配器:将其保存为 Fragment 的字段:
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); 

【讨论】:

【参考方案3】:

对于 kotlin(片段):

recyclerView.layoutManager=LinearLayoutManager(context)

【讨论】:

【参考方案4】:
binding.recyclerView.layoutManager = LinearLayoutManager(this)

【讨论】:

以上是关于错误 ANDROID STUDIO E/RecyclerView:未连接适配器;跳过布局的主要内容,如果未能解决你的问题,请参考以下文章

Android studio 报错问题

Android Studio 1.5错误

Android Studio编译错误总结

android studio错误解答

Android Studio 运行项目遇到的错误

android studio笔记之编译运行错误