我有一个ListView,每行都包含按钮。我不想为每个按钮分配它自己的侦听器对象,因为它会创建很多对象。但问题是如何确定单击按钮时的行号或上下文信息?确定此行中单击按钮时的行号
回答
每个视图(包括按钮)通过其setId(int)
方法可以 “确定”。
点击后,您将看到一个View.OnClickListener.onCLick(view)
。只需提取ID,你就知道这是哪个按钮。
当创建一个按钮:
button.setId(1);
当这个按钮被点击:
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int id = view.getId();
// do something with the Id
}
});
更新:答案是基于@Octavian Damiean的评论更新:鉴定意见setId()
应用来代替setTag()
。
'setTag()'不应该用于识别。标签在层次结构中不必是唯一的。 'setId()'应该用于识别。 – 2011-03-02 09:45:55
嗯,你是对的。那么setTag'可以用于这个,但这不是它的任务。我正在更新答案。谢谢。 – 2011-03-02 09:50:35
这没有错,但也不是最佳实践。 – 2011-03-02 09:54:20
使用
listview..setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int rowNumber,
long arg3) {
// TODO Auto-generated method stub
}
});
我们可以得到单击行
他没有单击行,而是在行内的Button上单击。 – 2011-03-02 09:39:34
但我有按钮里面的项目,用户点击它 – damluar 2011-03-02 09:40:06
- 1. 确定按钮的行为与单击鼠标时的行为不同
- 2. 获取自定义单元格按钮单击的节号和行号?
- 3. 单击按钮时运行PHP函数?
- 4. 单击按钮时删除表格行
- 5. 单击按钮时运行警报JS
- 6. 单击按钮不单击到表行
- 7. 单击按钮时获取所选单选按钮的编号
- 8. 单选按钮确认,同时单击“继续”按钮的Javascript
- 9. 当按钮单击操作包含警报时,如何从按钮单击中正确执行python代码?
- 10. 通过单击行中的按钮获取primefaces数据表中的行号
- 11. 单击此按钮时,将类添加到特定的类
- 12. 如何在单击按钮时删除一个特定行?
- 13. 如何知道在alertdialog中单击确定按钮时单击哪个单选按钮?
- 14. 通过单击按钮从表中删除自定义的行
- 15. 在按钮上删除正确的行单击
- 16. 单击按钮时的UmbrellaException
- 17. 运行PHP文件在按钮单击
- 18. 运行按钮JSP文件单击
- 19. 按钮单击创建新行
- 20. 在按钮单击上执行Ctrl + D
- 21. 按钮单击事件不执行
- 22. C#根据按钮单击运行Javascript
- 23. 单击按钮:禁用并执行按钮的处理程序
- 24. 单击按钮时最大化按钮
- 25. 如何在DataGridView中单击按钮时未显示其他行?
- 26. 产品订单,其中一个按钮,点击时行添加
- 27. 如何在单击按钮时在GridView中编辑一个选定的行?
- 28. 单击确定按钮时阻止ShowDialog()返回
- 29. 如何在同一行中单击按钮时读取该行的数据
- 30. 单击按钮时同时运行ajax和更改页面
你有没有考虑过为行上的点击做一个监听器,而不是在里面放一个按钮?因为在这种情况下,更容易理解哪个行被点击并执行不同的动作 – scambione 2011-03-02 09:27:47