【问题标题】:setOnClickListener on listview doesn't worklistview 上的 setOnClickListener 不起作用
【发布时间】:2020-04-28 00:22:27
【问题描述】:

我正在构建一个具有列表视图的应用程序。在列表视图中,我添加了一个删除项目的按钮。我创建了一个使用 sqlite 删除项目的功能。

问题是当我按下它来删除项目时该按钮不起作用。 并且 logcat 没有显示任何错误。

列表视图项中的按钮:

<Button
    android:id="@+id/del_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="144dp"
    android:layout_marginTop="68dp"
    android:onClick="delete_item"
  />

删除项目的乐趣:

fun delete_item(view:View){

//delete record
    var del_btn=findViewById<Button>(R.id.del_btn)

    del_btn.setOnClickListener {

        var check_box_id=del_btn.text
        var get_number_only=check_box_id.replace("[^0-9]".toRegex(),"")
        //creating the instance of DatabaseHandler class
        val databaseHandler: DatabaseHandler = DatabaseHandler(this@ListInvests)
        //calling the deleteEmployee method of DatabaseHandler class to delete record
        val status = databaseHandler.deleteEmployee(
            DeleteModelClass(
                Integer.parseInt(get_number_only)

            )
        )
        if (status > -1) {
            Toast.makeText(applicationContext, "record deleted", Toast.LENGTH_LONG).show()
        }


    }

}

【问题讨论】:

  • 您是否尝试检查监听器是否工作或删除记录有问题?
  • 试过调试....

标签: android kotlin onclicklistener


【解决方案1】:

问题是我没有在listview的Adatper类中添加监听器。 因此,我将侦听器添加到适配器类,并将 findViewById 附加到 rowview

mukesh 的回答解决了这个问题。

 //delete record
    var del_btn=rowView.findViewById<Button>(R.id.del_btn)

    del_btn.setOnClickListener {

        var check_box_id=del_btn.text
        var get_number_only=check_box_id.replace("[^0-9]".toRegex(),"")
        //creating the instance of DatabaseHandler class
        val databaseHandler: DatabaseHandler = DatabaseHandler(context)
        //calling the deleteEmployee method of DatabaseHandler class to delete record
        val status = databaseHandler.deleteEmployee(
            DeleteModelClass(
                Integer.parseInt(get_number_only)

            )
        )
        if (status > -1) {
            Toast.makeText(context, "record deleted", Toast.LENGTH_LONG).show()
        }


    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    相关资源
    最近更新 更多