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

时间:2019-07-04 16:30:32

标签: android android-studio kotlin android-recyclerview recycler-adapter

我为聊天应用程序提供了一个recyclerview,所以我需要实现用户,以便我从firebase中获得他们,并且一旦我添加了他们的图像,一切就可以正常工作,图像没有显示在recyclerview中,这让我出错“ E / RecyclerView:未连接适配器;正在跳过布局”

这是我用于实现的函数,我在onCreate方法中调用它

  fun fetchUsers(){
        val ref = FirebaseDatabase.getInstance().getReference("/users")
        ref.addValueEventListener(object:ValueEventListener {
            override fun onCancelled(p0: DatabaseError) {

            }

            override fun onDataChange(p0: DataSnapshot) {
                val adapter = GroupAdapter<ViewHolder>()
                p0.children.forEach {
                    Log.d("NewMessageActivity",it.toString())
                    val user = it.getValue(User::class.java)
                        adapter.add(UserItem(user!!))
                    adapter.setOnItemClickListener { item, view ->
                        val intent = Intent(view.context, ChatLogActivity::class.java)
                        startActivity(intent)
                        finish()
                    }
                }
                recyclerViewNewMessages.adapter=adapter
            }

        })
    }

这是我叫的班级

class UserItem(val user : User): Item<ViewHolder>(){
    override fun getLayout(): Int {
        return R.layout.user_row_newmessages
    }

    override fun bind(viewHolder: ViewHolder, position: Int) {

        viewHolder.itemView.tv_UserNamenewed.text = user.userName
        Picasso.get().load(user.profileImage).into(viewHolder.itemView.iv_UserPhotonewed)
    }

}

1 个答案:

答案 0 :(得分:0)

您可以在启动时分配并清空适配器,然后在有适配器时将数据添加到适配器。这样,您将不会看到此日志。

换句话说,如果您在主线程中进行分配,例如在活动的onCreate()中,则不会看到此信息。但是,首先将适配器设置为异步代码块。一切都已绘制完毕,并且recyclerview还没有提供适配器,因此它会打印此日志。