【发布时间】:2021-03-24 14:11:00
【问题描述】:
我想在 RecyclerView 中添加一个“删除”按钮,以显示房间数据库中存在的“用户”列表。单击按钮时,该按钮应允许删除单个用户。我试图在 Myviewholder 中插入一个函数,但是当我在 OnBindViewHolder 中调用它时,错误与 mUserViewModel 的初始化有关。你有什么建议吗? 这是适配器:
class ListAdapterUser: RecyclerView.Adapter<ListAdapterUser.MyViewHolder>() {
private var UserList = emptyList<User>()
private lateinit var mUserViewModel: UserViewModel
class MyViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
val button = itemView.findViewById<Button>(R.id.deleteoption)
fun deleteitem(item: User, viewModel: UserViewModel){
button.setOnClickListener{
viewModel.deleteUser(item)
}}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
return MyViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.custom_rowUser, parent, false))
}
override fun getItemCount(): Int {
return UserList.size
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val currentItem = UserList[position]
holder.itemView.textview_valueUser.text = currentItem.Uservalue.toString()
holder.deleteitem(currentItem, mUserViewModel)
}
fun setUserData(User: List<User>){
this.UserList = User
notifyDataSetChanged()
}
}
谢谢!
【问题讨论】:
-
我不熟悉 Kotlin,但在 Java 中,
SetOnClickListener设置在onBindViewHolder method中。喜欢holder.button.setOnClickListener。试试看
标签: button android-recyclerview android-room viewmodel onclicklistener