【发布时间】:2020-10-20 03:16:21
【问题描述】:
我正在 kotlin 中创建一个基本的 ToDo 列表应用程序,并将其数据存储在 SQLiteDatabase 中。我正在尝试添加滑动以删除功能。该功能有效,但我无法将任务的 ID 传递给删除功能。我可以在上面的 onCreate 类中使用 DisplayAdapter 中的 list[p1].id 吗?
显示适配器:
class DashboardAdapter(private val activity: dashboard, var list: MutableList<ToDo>) :
RecyclerView.Adapter<DashboardAdapter.ViewHolder>(){
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(activity).inflate(R.layout.rv_child_layout,p0,false))
}
override fun onBindViewHolder(holder: ViewHolder, p1: Int) {
holder.toDoName.text = list[p1].name
holder.toDoName.setOnClickListener{
val id_long = list[p1].id
val intent = Intent(activity,subtask_list::class.java)
intent.putExtra(INTENT_TODO_ID,id_long)
intent.putExtra(INTENT_TODO_NAME,list[p1].name)
activity.startActivity(intent)
}
}
override fun getItemCount(): Int {
return list.size
}
fun removeItem(todoId: Long) {
val db = DBHandler(null).db
db.delete(TABLE_TODO_ITEM,"$COL_TODO_ID=?", arrayOf(todoId.toString()))
db.delete(TABLE_TODO,"$COL_ID=?", arrayOf(todoId.toString()))
}
class ViewHolder(v : View) : RecyclerView.ViewHolder(v){
val toDoName : TextView = v.findViewById(R.id.tv_todo_name)
}
}
removeItem 是需要 list.id 的删除功能
调用 removeItem 函数:
val itemTouchHelperCallback = object : ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT){
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, position: Int) {
DashboardAdapter(dashboard(),dataset).removeItem(list[p1].id)
}
}
val itemTouchHelper = ItemTouchHelper(itemTouchHelperCallback)
itemTouchHelper.attachToRecyclerView(rv_dashboard)
我尝试过声明但不明白如何初始化以下内容:
private var dataset= mutableListOf<ToDo>()
lateinit var list: MutableList<ToDo>
我在 displayAdapter 之外还有一个 refreshList 函数,用于在更新后刷新 ToDo 列表:
private fun refreshList(){
rv_dashboard.adapter = DashboardAdapter(this,dbHandler.getToDo())
}
如何初始化列表变量或从显示适配器获取列表[p1].id?
【问题讨论】:
标签: android android-studio kotlin android-recyclerview