4

我知道基本的不同之处在于setId()int其作为参数,而setTag()Object. 我正在询问更多关于实用建议的信息。

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

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

我想如果我的方式是正确的,那么setTag()当我想传递额外的数据时我会使用,但我会先让你评论这个问题。

4

2 回答 2

4

你的猜测是对的。setId()当您只想要一种方法来识别View代码中的特定内容以及setTag想要传递附加信息View(附加数据可能会或可能不会唯一识别)时,您应该使用View。您可以只使用该setTag方法并传递一个包含id+ 附加数据的复合对象,但在这种情况下,您需要构建一个特殊对象,而不是更简单的方法,即调用有问题的两个方法。

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

身份证

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

标签

与 ID 不同,标签不用于标识视图。标签本质上是可以与视图关联的额外信息。它们最常用于方便地将与视图相关的数据存储在视图本身中,而不是将它们放在单独的结构中。

于 2012-05-04T07:55:22.807 回答
1

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

TAGObject用于分配附加数据的属性类型(可能由您自己的对象),不同的对象可能带有相似的标签。

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

于 2012-05-04T07:53:17.390 回答