将图像按钮添加到 ListView 中的自定义项的布局会停止接收长按事件
Posted
技术标签:
【中文标题】将图像按钮添加到 ListView 中的自定义项的布局会停止接收长按事件【英文标题】:Adding a imagebutton to the layout of a custom item in a ListView stops receiving the long pressed event 【发布时间】:2012-12-16 11:04:33 【问题描述】:我正在使用自定义适配器/自定义项布局(2x TextViews 和 4x ImageButtons)制作一个列表视图,我希望能够长按列表项来做某事,并且仍然能够按下布局上的 ImageButtons。
问题是,如果我只有 TextViews,它可以工作并捕获长按事件,只要我添加一个 ImageButton,长按事件就会停止工作。知道为什么会这样吗?
【问题讨论】:
尝试使ImageButton
无法聚焦。
【参考方案1】:
当您在项目布局中添加可点击视图(如按钮)时,它们会捕获点击事件并且不会冒泡到底层 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);
【讨论】:
这显然有效,将进行更多测试以查看它是否真的满足我的需求,谢谢:) 很高兴为您服务。不久前我遇到了完全相同的问题,但这是我找到的唯一解决方案。如果您发现其他东西,请告诉我:)以上是关于将图像按钮添加到 ListView 中的自定义项的布局会停止接收长按事件的主要内容,如果未能解决你的问题,请参考以下文章
Listview ArrayAdapter 自定义项 onClickListener 仅第一次工作
如何使用菜单布局将自定义项添加到 NavigationView?
使用 QStyledItemDelegates 作为 QListView 中的自定义项