我四处搜索并没有得出解决方案(可能没有使用正确的关键字)。
所以,我有一个自定义的 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/