在getView()中设置单击侦听器后,ListView中的项目不能长时间单击

Yao*_*hen 5 android android-listview

我已经四处寻找并且没有提出解决方案(可能没有使用正确的关键字).

所以,我有一个自定义ListView,当项目被长按时,它的项目可以被拖动.在其项目中,有一个包含两个TextView的ImageView和LinearLayout.单击LinearLayout或ImageView时将执行操作.

为此,我在DragListView上使用setOnItemLongClickListener,它扩展了ListView,启动了拖动操作,而onInterceptTouchEvent则用于管理拖动操作.

然后,我构建了一个扩展BaseAdapter的自定义适配器,并覆盖其getView()以实现行中的子项.LinearLayout和ImageView已经被setOnClickListener.

问题是,LinearLayout和ImageView能够完成它们的工作,但是没有调用onItemLongClick.

getView()中的监听器;

    holder.delete.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
//Do something
}
Run Code Online (Sandbox Code Playgroud)

对于项目长按(拖动启动器)

setOnItemLongClickListener(new OnItemLongClickListener() {              

    @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view,
                        int position, long id) {
    //Do something
    }
Run Code Online (Sandbox Code Playgroud)

非常感谢你!

the*_*ook 2

我认为手势检测器是处理事件的方法之一。然而,通常,当我们想要检测手势而不是长按时,会使用手势检测器。

未调用 onItemLongClick 的原因是 onClickListener 可能会消耗触摸事件。因此,如果您想处理 onItemLongClick,请拦截触摸事件并将其分派到您想要处理的视图。

您可以通过以下链接找到更多详细信息。 http://developer.android.com/guide/topics/ui/ui-events.html

  • 不管怎样,你做了 setLongClickable(true); 吗?在 getView() 中的每个项目上? (2认同)
  • 嘿太棒了,convertView 中的 setLongClickable 发挥了魔力!谢谢! (2认同)