首页 > 解决方案 > 自定义 ListView 有一个按钮 - 如何检测按钮被按下的哪一行?

问题描述

我正在Android为一个练习项目制作一个库存跟踪器应用程序。我SQLite用于存储,我ListView使用CursorAdapter. 我用来CursorLoader从数据库中获取数据

我的每一行ListView都有几个TextViews和一个Button. 我计划使用Button来减少数据库中所选项目的数量列/属性。

我在哪里设置按钮OnClick监听器?在我的Activity班级还是我的CursorAdapter班级' bindView()

另外,如何从按钮单击中检测到按钮按下了哪一行?

我已经使用 ListViewonItemClickListener将用户发送到显示有关当前行的更多信息的详细活动。那有一个通过的 id 参数。因此,我找到了一个等效项,可用于我放在每一行上的按钮。

标签: javaandroidlistviewonclicklistenerbuttonclick

解决方案


onBindViewHolder给那个按钮一个标签。该标签可以是项目的位置或项目本身。(标签可以是对象)

 override fun onBindViewHolder(holder: ItemHolder, position: Int) {
   CUSTOMMODEL item = items[position];
   ...
   holder.button.setTag(item);
   //OR
   holder.button.setTag(position);
   ...
   holder.button.setOnClickListener(clickListener);
}

在您的onClick(View view)方法中,从视图中获取标签,您可以了解单击了哪个项目。


推荐阅读