Android Kotlin错误:"返回类型是' unit'这不是被覆盖的子类型"

时间:2017-07-09 07:28:42

标签: android kotlin

我试图弹出一个警告框,询问用户是否要删除ListView中显示的值,只要他试图长按其中一个

mainListView.setLongClickable(true)
mainListView.setOnItemLongClickListener(object: AdapterView.OnItemLongClickListener {
        override fun onItemLongClick(parent: AdapterView<*>, view: View, position:Int, id:Long) {
           val alertDialog = AlertDialog.Builder(this@listV)
           alertDialog.setTitle("Would you like to delete this ?")
           alertDialog.setPositiveButton("Yes") { dialog, whichButton -> mobileArray.removeAt(position);listAdapter.notifyDataSetChanged() }
           alertDialog.setNegativeButton("Cancel", { dialog, which ->  })
           alertDialog.create()
           alertDialog.show()}})

但OnItemLongClick函数出现错误

  

返回类型是&#39; unit&#39;这不是被覆盖的子类型   公共抽象乐趣onItemLongClick(...):在android.widget.adapterView.OnItemLongClickListener

中定义的布尔值

我非常困惑,因为我使用了几乎相同的代码来处理一个简单的&#34; onItemClick&#34;它运作良好

1 个答案:

答案 0 :(得分:2)

onItemClickonItemLongClick的签名有所不同(授予,API中的奇怪不一致):

void onItemClick(AdapterView<?> parent, View view, int position, long id)

boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)

后者返回boolean值,指示事件是否已被侦听器使用。如果这是true,则其他听众不会因此事件被调用。

所以你想要做的是这样的事情:

override fun onItemLongClick(parent: AdapterView<*>, view: View, position: Int, id: Long): Boolean {
    // alert dialog code
    return true
}