java - 自定义 ListView 有一个按钮 - 如何检测按钮被按下的哪一行?
问题描述
我正在Android
为一个练习项目制作一个库存跟踪器应用程序。我SQLite
用于存储,我ListView
使用CursorAdapter
. 我用来CursorLoader
从数据库中获取数据
我的每一行ListView
都有几个TextViews
和一个Button
. 我计划使用Button
来减少数据库中所选项目的数量列/属性。
我在哪里设置按钮OnClick
监听器?在我的Activity
班级还是我的CursorAdapter
班级' bindView()
?
另外,如何从按钮单击中检测到按钮按下了哪一行?
我已经使用 ListViewonItemClickListener
将用户发送到显示有关当前行的更多信息的详细活动。那有一个通过的 id 参数。因此,我找到了一个等效项,可用于我放在每一行上的按钮。
解决方案
在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)
方法中,从视图中获取标签,您可以了解单击了哪个项目。
推荐阅读
- python - 有什么类似于 Python 在 c++ 中的索引吗?
- java - 如何清除导航标题视图?
- javascript - CSS 变换旋转仅适用于 Firefox
- angular - “对象”类型上不存在属性“数据”
- powershell - 定期检查日志是否有错误,但要防止发送重复通知
- javascript - 获取未定义表格单元格javascript子项的值
- jhipster - jhipster项目时出现elasticsearch错误
- ruby - 如何使用 Ruby 比较两个 XML 文件并以 html 格式显示差异
- php - Laravel:碳缩短 diffForHumans()
- javascript - html 页面作为小部件