当我按住一个项目时,我希望有一个行为x,当我按住同一个项目时,行为y。我似乎可以做其中一个,但不是两个。
所以我有这个Listview lv
。
在onCreate
我给它
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.v(TAG, "click position: " + position);
}
});
当我点击listview中的任何项目时,我会得到日志。
说我删除了setOnItemClickListener
。现在我补充说:
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {
Log.v(TAG, "long click position: " + position);
return true;
}
});
当我长按(按住3秒)时,我会得到日志。耶。
但是,如果我尝试同时使用它们,setOnItemLongClickListener
会使setOnItemClickListener
黯然失色。 onItemClick
永远不会被调用,只有当我进行长时间点击时才能记录该行。
持有ListView中的项目的xml包含:
android:longClickable="true"
android:clickable="true"
关于我想要做什么的基本概念我做错了吗?
答案 0 :(得分:0)
如果所有其他方法都失败了,您可以在listview上使用onTouch并使用2个线程来处理长触摸和短触摸。它变得更加痛苦,但这就是我如何构建一个dragNdrop列表视图并滑动以删除listview。我希望能给你一个解决这个问题的方法。
答案 1 :(得分:0)
具有讽刺意味的是,从包含我的ListView项目的xml中删除了以下内容:
android:longClickable="true"
android:clickable="true"
现在两个听众都按照我的意图工作了!