【问题标题】:Difference between set/getId() and set/getTag()?set/getId() 和 set/getTag() 的区别?
【发布时间】:2012-05-13 18:11:24
【问题描述】:

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

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

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

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

【问题讨论】:

标签: android tags


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    ID

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

    标签

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-18
      • 2018-09-29
      • 1970-01-01
      • 2017-05-04
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多