E / RecyclerView: адаптер не подключен;пропуск макета ошибка Logcat - PullRequest
0 голосов
/ 04 июля 2019

У меня есть окно просмотра чата для приложения чата, поэтому мне нужно внедрить пользователей, чтобы я получил их из базы данных, и все работало, как только я добавил их изображения, изображения не отображаются в обзоре переработчика, и это вызывает ошибку«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 голосов
/ 04 июля 2019

Вы можете назначить и очистить адаптер при запуске, а затем добавить данные в свой адаптер, когда он у вас есть.Таким образом, вы не увидите этот журнал.

Другими словами, если вы выполняете присваивание в главном потоке, например, в onCreate() действия, вы не увидите этого.Тем не менее, первое место, которое вы устанавливаете адаптер, находится в блоке асинхронного кода.Все уже прорисовано, и просмотрщик еще не предоставил адаптер, поэтому печатает этот журнал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...