我试图弹出一个警告框,询问用户是否要删除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;它运作良好
答案 0 :(得分:2)
onItemClick
和onItemLongClick
的签名有所不同(授予,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
}