猿问

RecyclerView 适配器不适用于追星族

我尝试将 groupie 适配器添加到我的回收器视图中,如下面的代码所示。但是,当我运行我的应用程序时,出现编译器错误,提示我的 reyclerview 不能为空(因为 kotlin 空安全功能)。我不明白为什么这个适配器不工作。


我知道问题在于:


recyclerview_newmessage.adapter = adapter

这是完整的代码


class NewMessageActivity : AppCompatActivity() {


  override fun onCreate(savedInstanceState: Bundle?) {

    super.onCreate(savedInstanceState)


    supportActionBar?.title = "Select User"


    fetchUsers()

  }


  private fun fetchUsers() {

    val ref = FirebaseDatabase.getInstance().getReference("/users")

    ref.addListenerForSingleValueEvent(object: ValueEventListener {


        override fun onCancelled(p0: DatabaseError) {


        }


        override fun onDataChange(p0: DataSnapshot) {

            val adapter = GroupAdapter<ViewHolder>()

            p0.children.forEach {

                Log.d("NewMessage", it.toString())

                val user = it.getValue(User::class.java)


                if (user != null) {

                    adapter.add(UserItem(user))

                }

            }


            recyclerview_newmessage.adapter = adapter

        }


    })

  }

}


class UserItem(val user: User): Item<ViewHolder>() {


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

    viewHolder.itemView.username_textview_new_message.text = user.username

  }


  override fun getLayout(): Int {

    return R.layout.user_row_new_message

  }

}

最终结果显示了回收站视图中的行,其中包含我的 firebase 数据库中的用户名。


犯罪嫌疑人X
浏览 101回答 1
1回答

慕姐8265434

如果在 xml 文件中定义recycler view,则需要添加它。override fun onCreate(savedInstanceState: Bundle?) {&nbsp; &nbsp; super.onCreate(savedInstanceState)&nbsp; &nbsp; setContentView(R.layout.ref_xml_file) . // add this line&nbsp; &nbsp; supportActionBar?.title = "Select User"&nbsp; &nbsp; fetchUsers()&nbsp; }如果没有定义到 xml 文件中。override fun onCreate(savedInstanceState: Bundle?) {&nbsp; &nbsp; &nbsp; &nbsp; super.onCreate(savedInstanceState)&nbsp; &nbsp; &nbsp; &nbsp; var recyclerview_newmessage = RecyclerView(this)&nbsp; &nbsp; &nbsp; &nbsp; setContentView(recyclerview_newmessage) . // add this line&nbsp; &nbsp; &nbsp; &nbsp; supportActionBar?.title = "Select User"&nbsp; &nbsp; &nbsp; &nbsp; fetchUsers()&nbsp; &nbsp; &nbsp; }
随时随地看视频慕课网APP

相关分类

Java
我要回答