【发布时间】:2015-08-05 02:32:56
【问题描述】:
我希望当我单击一个项目时有一个行为 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"
关于我要做什么的基本概念我错了吗?
【问题讨论】:
-
您在您的适配器中设置了任何点击监听器?或者您的列表项中有按钮或复选框?您可以发布您的列表项 xml 和适配器代码吗?
-
我使用的适配器没有任何类型的监听器。列表项中仅存在 2 个 TextView。
-
代码在这里可以正常工作,可能是你的文本视图有问题,可能他们请求焦点或阻止 onClick 事件的东西
-
@SaNtoRiaN 确实,问题来自 xml。
-
@hazyred 祝你好运 :)
标签: android listview onitemclicklistener