2012-05-04 81 views
4

我知道基地不同的是setId()需要int作爲參數,而setTag()需要Object。我更多地詢問實用建議。set/getId()和set/getTag()之間的區別?

當我以編程方式生成更多相同的元素時,我通過setId(++counter)來設置它們的ID,這對我來說很好,知道哪個元素髮送了onClick事件。我可以通過setTag(++counter)做同樣的事情,但我習慣了以前的做法。

那麼我應該什麼時候使用setTag(),我在使用setId()時出錯了嗎?

我想如果我的方式是正確的,那麼當我想傳遞額外的數據時,我會使用setTag(),但我會先留下您對此問題的評論。

+0

看看這個線程http:// stackoverflow。com/questions/5291726/what-is-main-of-settag-gettag-methods-of-view – vandzi

+0

重複問題: http://stackoverflow.com/questions/9757069/what-are-tag- and-id-in-android –

+0

@vandzi看到它。它讓我發佈這個問題。謝謝 – sandalone

回答

4

你的猜測是正確的。如果您希望將附加信息與該View(該附加數據可能會或可能不會唯一標識View)一起傳遞,您只需要使用setId()即可在代碼中識別該特定View,並使用setTag。 您只能使用setTag方法並傳遞包含id +其他數據的複合對象,但在這種情況下,您需要構建特殊對象而不是更簡單的方法,即調用所討論的兩個方法。

編輯:View類的文檔中還包含了這兩種方法的有價值的信息:瀏覽次數可能有與它們相關聯的整數ID

標識

。這些ID通常是在佈局XML文件中分配的 ,用於在視圖樹中查找 特定視圖。

標籤

與標識,標籤不用於識別的看法。標籤基本上是 可以與視圖關聯的額外信息。他們 是最常用的方式來存儲與視圖相關的數據,而不是將它們放入單獨的 結構中。

1

ID是(通常是唯一的)整型屬性,您可以將其指定給任何視圖,以便將來識別它們。

TAGObject用於分配附加數據的屬性類型(可以由您自己的對象),不同的對象可能帶有類似的標籤。所以如果你只是想唯一標識你的視圖,你應該使用id(因爲它是原始數據類型並且會消耗少量的內存),而如果你想讓你的對象也攜帶額外的信息,那麼使用TAG 。