2011-09-08 117 views
10

Preference中onCreateViewonBindView方法之間的區別是什麼?Preference的onCreateView和onBindView方法之間的區別

在文檔它說,onBindView

綁定創建視圖,爲這種偏好的數據。這是一個 的好地方,可以在佈局中獲取對自定義視圖的引用,並在其上設置 屬性。

爲什麼在我的佈局中設置視圖屬性是一個很好的地方?目前我在onCreateView方法中設置屬性,一切看起來都很好。 從我的經驗看,這兩種方法總是一起調用。也許在某些情況下,只有onBindView被調用?

+0

'onCreateView 「你只限於查看建築和準備裝訂。 'onBindView'你只限於基於數據初始化視圖;那是什麼綁定。有些情況下,否則他們不會是單獨的方法,並且文檔會說不同的東西。您的代碼正在「意外」工作。 –

+0

escape-llc-評論無法標記爲接受的答案 - 請以答覆的形式發佈您的答案,而不是評論:) –

+0

我看到有人發表評論作爲答案,但很少我看到相反的結果。 :-) – davidcesarino

回答

7

onCreateView()用於創建最終包含首選UI的View層次結構。 onBindView()用於將實際數據綁定到在onCreateView()中創建的View層次。

該模式將View層次的創建 - 從數據綁定到View層次結構 - 將被高速緩存的View層次結構分開。對於首選項,onCreateView()僅調用一次,但每次UI需要加載首選項視圖時調用onBindView()

我猜測你的當前設置工作,因爲你永遠不會改變你在首選項上設置的屬性。最好在onBindView()中設置View層次結構的屬性,以防萬一它需要動態變化。

(順便說一句,這個視圖創建與裝幀設計圖案也出現在CursorAdapters,它只能產生足夠的視圖來顯示在屏幕上,而是不斷地結合這些意見,以新的數據。)

相關問題