Android ListView setOnItemLongClickListener有效,但setOnItemClickListener不

时间:2015-08-05 02:32:56

标签: android listview onitemclicklistener

当我按住一个项目时,我希望有一个行为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"

关于我想要做什么的基本概念我做错了吗?

2 个答案:

答案 0 :(得分:0)

如果所有其他方法都失败了,您可以在listview上使用onTouch并使用2个线程来处理长触摸和短触摸。它变得更加痛苦,但这就是我如何构建一个dragNdrop列表视图并滑动以删除listview。我希望能给你一个解决这个问题的方法。

答案 1 :(得分:0)

具有讽刺意味的是,从包含我的ListView项目的xml中删除了以下内容:

android:longClickable="true"
android:clickable="true"

现在两个听众都按照我的意图工作了!