我想問一下關於整個ID系統如何在android中工作的很多問題。我查閱了View文檔,但對我的口味來說,描述太淺了。關於查看ID的問題一堆
有沒有一種模式,IDE(Eclipse的/ Netbeans的),當我使用
android:id="@+id/..."
如何生成的ID ?或者它是完全隨機的?如果我以編程方式設置ids,那麼它是否會被上下文 類
findViewById()
函數找到?如果對前一個問題的答案是肯定的,那麼如果我想 創造了大量的意見,但我希望他們能有後來識別不同的IDS ,然後至極一個是更好地使用? (回答 這個問題,這將是非常有用的知道了 前兩個答案)
例如生成在儘可能大的範圍內隨機IDS:
Random random = new Random(); for(int i=0; i<100; i++) { View view = new View(someContext); view.setId(random.nextInt(Integer.MAX_VALUE)); }
或在某些設定的ID排序順序,例如:
final int addToId = 5670; for(int i=0; i<100; i++) { View view = new View(someContext); view.setId(i+addToId); }
- 此外,我想知道,會發生什麼,當你使用一個 LayoutInflater例如填充使用一個列表中每個項目的預定義xml佈局。然後你可以通過
findViewById()
得到getView()
函數中的 子視圖。所以我 假設,你列表中的所有相同的視圖有 相同的ID。如果是這樣,那麼使用tag
屬性來區分膨脹佈局中的項目是否是一種好習慣?
對這些問題的任何明確的解釋將不勝感激!
嗨!隨機/增加ID背後的基本思想是避免以某種方式添加重複的ID,而無需手動查找佈局xml中的所有修復ID,並檢查,如果新ID已經在其中。謝謝你的回答,但你能告訴我,這些id是如何產生的嗎?據我所知,就像我的第二種選擇:IDE選擇一個隨機數並添加一個新的ID。 – 2012-08-09 13:10:23
如果你不添加一個ID,那麼你將無法通過ID訪問該視圖。你有沒有考慮給視圖添加一個標籤,然後通過標籤訪問?迭代通過孩子的選項是否可以找到你想要實現的解決方案?通常,如果您需要訪問層次結構中的特定視圖,則只需要一個id。如果視圖是列表或網格類型父對象,那麼您將通過適配器類來訪問子視圖,該適配器類將處理設置和檢索有問題的視圖。也許關於這個問題的上下文的進一步信息會有所幫助? – 2012-08-09 13:18:24
我沒有具體記住,我試圖實現。事實是,問題出現了,當我爲RadioButtons寫封裝類時,創建類似RadioGroup的東西而不是View,只是處理按鈕檢查狀態。這個類處理,選擇和取消選擇按鈕的RadioButtons,當我開始測試它與更大量的RadioButtons時,我需要生成ids dinamically。然後我開始懷疑這些問題。再次感謝您的幫助,我認爲最重要的是,運行時生成的id可以通過findViewById()訪問。 – 2012-08-09 13:36:16