set / getId()和set / getTag()之间的区别?

时间:2012-05-04 07:44:25

标签: android tags

我知道不同的基础是setId()int作为参数,而setTag()需要Object。我要求更多关于实用建议。

当我以编程方式生成更多相同的元素时,我通过setId(++counter)设置了ID,我可以知道哪个元素发送了onClick事件。我可以通过setTag(++counter)做同样的事情,但我习惯了以前的方法。

那么我什么时候应该使用setTag()我在使用setId()时犯了错误?

我想如果我的方式是正确的,那么当我想传递其他数据时我会使用setTag(),但我会先给你留言。

2 个答案:

答案 0 :(得分:4)

你的猜测是正确的。如果您只想在代码中识别特定setId(),则应使用View,并在想要传递其他信息setTagView使用View其他数据可能会或可能不会唯一标识setTag)。 您只能使用id方法并传递包含{{1}} +附加数据的复合对象,但在这种情况下,您需要构建一个特殊对象而不是更简单的方法,调用两个方法问题

修改: View类的文档还包含有关这两种方法的有价值信息:

<强>的ID

  

视图可能具有与之关联的整数id。这些ID是   通常在布局XML文件中分配,并用于查找   视图树中的特定视图。

<强>代码

  

与ID不同,标签不用于标识视图。标签本质上是   可以与视图关联的额外信息。他们   最常用于存储与视图相关的数据的便利性   观点本身而不是将它们分开   结构

答案 1 :(得分:1)

ID是(通常是唯一的)整数类型的属性,您可以将其分配给任何视图,以便将来识别它们。

TAGObject类型的属性,用于分配其他数据(可能由您自己的Object),不同的Object可能带有类似的标记。

因此,如果您只是想要唯一地标识您的视图,您应该使用id(因为它是原始数据类型并且将消耗少量内存),而如果您希望您的Object也携带其他信息,请使用TAG。