有什么方法可以在函数内部调用列表而不在函数参数中分配它? 科特琳

问题描述

我是kotlin和Android Studio的新手,我正在尝试制作待办事项列表应用程序。

我正在尝试添加滑动以删除应用程序内部的功能。我无法在RecyclerView的displayAdapter内的swipetodel函数调用列表:

class DashboardAdapter(val activity: dashboard,val dbHandler: DBHandler,internal 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))

        }

        val item=object :swipetodel(this,itemtouchhelper.LEFT ){
            override fun onSwiped(viewHolder: RecyclerView.ViewHolder,direction: Int) {
                dbHandler.deletetoDo(list[p1].id)
                activity.refreshList()
            }
        }


        override fun onBindViewHolder(holder: ViewHolder,p1: Int) {
            holder.todoName.text = list[p1].name
            holder.todoName.setonClickListener{
                val intent = Intent(activity,subtask_list::class.java)
                intent.putExtra(INTENT_Todo_ID,list[p1].id)
                intent.putExtra(INTENT_Todo_NAME,list[p1].name)
                activity.startActivity(intent)
            }

        }

        override fun getItemCount(): Int {
            return list.size
        }
        class ViewHolder(v : View) : RecyclerView.ViewHolder(v){
            val todoName : TextView = v.findViewById(R.id.tv_todo_name)
        }

    }

我在以下单词的p1中得到未解决的引用:

dbHandler.deletetoDo(list[p1].id)

我知道这是因为我没有在onSwiped函数添加p1参数,但是如果这样做,它将创建另一个函数而不是覆盖。是否有解决方法删除功能如下:

fun deletetoDo(todoId: Long){
        val db = writableDatabase
        db.delete(TABLE_Todo_ITEM,"$COL_Todo_ID=?",arrayOf(todoId.toString()))
        db.delete(TABLE_Todo,"$COL_ID=?",arrayOf(todoId.toString()))
    }

和swipetodel功能

abstract class swipetodel( 
context: dashboard.DashboardAdapter,dragDir: Int,swipeDir: Int):itemtouchhelper.SimpleCallback(dragDir,swipeDir) 
{
    override fun onMove(
        recyclerView: RecyclerView,viewHolder: RecyclerView.ViewHolder,target: RecyclerView.ViewHolder
    ): Boolean {
        return false
    }

    override fun onSwiped(viewHolder: RecyclerView.ViewHolder,direction: Int) {
        Todo("Not yet implemented")
    }
}

代码不完整,但是我知道如果不分配p1,代码将无法工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)