我尝试将 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 数据库中的用户名。
1 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
如果在 xml 文件中定义recycler view,则需要添加它。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.ref_xml_file) . // add this line
supportActionBar?.title = "Select User"
fetchUsers()
}
如果没有定义到 xml 文件中。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var recyclerview_newmessage = RecyclerView(this)
setContentView(recyclerview_newmessage) . // add this line
supportActionBar?.title = "Select User"
fetchUsers()
}
添加回答
举报
0/150
提交
取消