android - 在 getView() 中设置点击监听器后,ListView 中的项目不能长时间点击

标签 android android-listview

我四处搜索并没有得出解决方案(可能没有使用正确的关键字)。

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

为此,我在扩展 ListView 的 DragListView 上使用 setOnItemLongClickListener 来启动拖动操作,并使用 onInterceptTouchEvent 来管理拖动操作。

然后,我构建了一个扩展 BaseAdapter 的自定义适配器并覆盖了它的 getView() 以实现该行中的子项。 LinearLayout 和 ImageView 已经设置了 OnClickListener。

问题是,LinearLayout 和 ImageView 可以做它们的事情,但是没有调用 onItemLongClick。

getView()里面的监听器;

    holder.delete.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
//Do something
}

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

setOnItemLongClickListener(new OnItemLongClickListener() {              

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

非常感谢!

最佳答案

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

没有调用 onItemLongClick 的原因是 onClickListener 可能会消耗触摸事件。 因此,如果您想处理 onItemLongClick,拦截触摸事件并将其分派(dispatch)给您想要处理的 View 。

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

关于android - 在 getView() 中设置点击监听器后,ListView 中的项目不能长时间点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5855541/

相关文章:

android - 如何在 Android 中更改 SettingsActivity 的主题?

java - 如何让 baseadapter 从 0 或 1 以外的位置开始

java - 如何在 android 中制作 Rss 新闻阅读器应用程序......?

android - 免安装应用 zip 上传错误

java - 如何解决 "This element has no attached source and the Javadoc could not be found in the attached Javadoc"?

java - ListView 在打开时删除选择

java - 使用 Retrofit 和 RxJava 组合来自多个 API 调用的数据 (Android)

java - Android 4.4 ConsumerIr.transmit 变得疯狂

android - 反转ListView显示顺序

android - 获取用作 ListView 自定义行的根 xml 布局的 LayoutParams