Android ListView setOnItemLongClickListener 有效但 setOnItemClickListener 无效
Android ListView setOnItemLongClickListener works but setOnItemClickListener does not
我希望在单击某个项目时有一个行为 x,在我按住同一项目时有一个行为 y。我似乎可以做其中之一,但不能同时做。
所以我有这个列表视图 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);
}
});
当我单击列表视图中的任何项目时,我会收到日志。
假设我删除了 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"
我做错了什么基本概念?
如果一切都失败了,您可以在列表视图上使用 onTouch 并使用 2 个线程来处理长触摸和短触摸。它变得更加痛苦,但这就是我构建 dragNdrop 列表视图并滑动以删除列表视图的方式。我希望这能让你开始解决这个问题。
具有讽刺意味的是,我从包含我的 ListView 项目的 xml 中删除了以下内容:
android:longClickable="true"
android:clickable="true"
现在两个听众都按照我的预期工作了!
我希望在单击某个项目时有一个行为 x,在我按住同一项目时有一个行为 y。我似乎可以做其中之一,但不能同时做。
所以我有这个列表视图 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);
}
});
当我单击列表视图中的任何项目时,我会收到日志。
假设我删除了 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"
我做错了什么基本概念?
如果一切都失败了,您可以在列表视图上使用 onTouch 并使用 2 个线程来处理长触摸和短触摸。它变得更加痛苦,但这就是我构建 dragNdrop 列表视图并滑动以删除列表视图的方式。我希望这能让你开始解决这个问题。
具有讽刺意味的是,我从包含我的 ListView 项目的 xml 中删除了以下内容:
android:longClickable="true"
android:clickable="true"
现在两个听众都按照我的预期工作了!