我已经四处寻找并且没有提出解决方案(可能没有使用正确的关键字)。
所以,我有一个自定义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
}
对于项目长按(拖动启动器)
setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
//Do something
}
非常感谢!
答案 0 :(得分:2)
我认为手势检测器是处理事件的方法之一。 但是,通常情况下,当我们想要检测不是长按的手势时,会使用手势检测器。
未调用onItemLongClick的原因是onClickListener可能会使用触摸事件。 因此,如果要处理onItemLongClick,请拦截触摸事件并将其分发给您要处理的视图。
您可以在链接后找到更多详细信息。 http://developer.android.com/guide/topics/ui/ui-events.html
答案 1 :(得分:0)
好的,我自己找到了解决方案。 我创建了一个手势检测器来检测长按,而不是使用onItemLongClickListener。然后我覆盖dispatchTouchEvent并强制扫描长按,然后返回super.dispatchTouchEvent和其他触摸事件。 建议仍然欢迎!