2010-12-22 62 views
0

好的,我希望我不會因爲詢問這樣一個模棱兩可的問題而猛烈抨擊,但我很難過,甚至不知道如何提出這個問題。我會盡可能地嘗試溝通我的問題,並會在需要時予以澄清。Android自定義光標適配器和BindView

我有兩個使用MergeCursor合併的遊標。我也有一個自定義的遊標適配器。在我的自定義遊標適配器中,我重寫了BindView。我注意到項目沒有出現在我的列表視圖中的奇怪行爲。基本上,我有兩個textview列表視圖中的每一行。在最後一行中,其中一個字段爲空。

我一步步通過BindView,我發現它執行了3次。我的列表視圖中只有7個項目(所以這是7x3)。他們都顯示在屏幕上,除了項目7中的一個字段外。我注意到,雖然在BindView的兩次通過中缺少一個字段值。

我想知道的是,爲什麼BindView要執行3次。所以當我說3我的意思是3x7。列表中的7個項目,所以它通過BindView循環21次。我希望我有道理。

如果不明確,請不要抨擊我。我很樂意修改或提供其他信息。

回答

1

我想知道的是,爲什麼BindView執行3次。所以當我說3我的意思是3x7。列表中的7個項目,所以它通過BindView循環21次。我希望我有道理。

當ListView進入測量階段時,它會調用適配器上的newView和bindView,以便設置行(它的子級)的尺寸並確定它自己的尺寸。在這個過程中,它不保留視圖,因此當視圖在屏幕上繪製時需要重新創建它們。你可以看看ListView來源,看看它究竟在做什麼。

+0

感謝您的回答。我認爲我缺少物品的問題與setContentView()有關。當我的活動首次運行時,我的列表中的東西缺失。當活動恢復時,所有物品都在那裏。我創建了一個名爲initialize()的東西,它從處理列表總體的onResume()運行。當它從onResume()被調用時,一切都很好。如果它在onCreate()後被調用,我的物品丟失。 – 2010-12-23 16:00:32