我真的很沮丧,因为我今天已经尝试了4个小时,而我找不到解决方案。由于某些原因,有时无法检测到我的长按侦听器!
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int pos, long id) {
Toast.makeText(MainActivity.this, "Long click", Toast.LENGTH_SHORT).show();
contactArrayList.remove(pos);
arrayAdapter.notifyDataSetChanged();
return true;
}
});
这个简单的代码只是使用适配器从我的列表和数组列表中删除了一个项目。但是,有时onItemLongClickListener甚至都不会被调用,并且吐司甚至都不会显示!我知道android正在检测到它,因为只要我长按一下日志猫,就会收到此消息:
/ViewRootImpl: ViewRoot's Touch Event : ACTION_UP
那么为什么有时它只能工作呢?我的代码有问题吗,还是android本身有问题?如果android有问题,该如何解决?
它是第一次运行,但是在退出我的应用程序,旋转屏幕等之后,长按将停止检测。我已经坚持了将近8个小时,我真的非常需要您的帮助。
最佳答案
可以尝试使用View.OnItemLongClickListener()而不是AdapterView,并将OnItemLongClick()中的参数更改为View。
希望这可以帮助...