将图像按钮添加到ListView中的自定义项目的布局会停止接收长按事件

时间:2012-12-16 11:04:33

标签: android listview layout long-press

我正在使用自定义适配器/自定义项目布局(2x TextViews和4x ImageButtons)创建列表视图,我希望能够长按列表项来执行某些操作,并且仍然可以按布局上的ImageButtons。

问题在于,如果我只有TextViews它可以工作并捕获Long按事件,只要我添加一个ImageButton,Long按事件就会停止工作。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

当您在项目布局中添加可点击的视图(如按钮)时,它们会捕获点击事件并且不会冒泡到基础ListView,为了解决这个问题,您可以将长点击监听器添加到项目中根布局。

所以不要在你的活动中这样做:

ListView lv = (ListView) findViewById(R.id.lv);
lv.setOnItemLongClickListener(listener);

您在适配器中执行此操作:

@Override
public View getView(int position, View view, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = inflater.inflate(R.layout.item, parent, false);

    view.setLongClickable(true);
    view.setOnLongClickListener(listener);
}