2011-10-13 67 views
3

我對列表視圖的生命週期感到十分困惑。更具體地說,列表適配器到底做了什麼?它只是向給定視圖提供數據嗎?當getView()函數被調用時何時/在哪裏?這個getView()函數提供了什麼目的?從查看代碼看起來,getView()看起來像是將數據「分配給」要顯示的視圖。我希望能夠使用列表視圖,而不必記住,做到這一點,然後這是爲了它的工作。我寧願理解它,以便我可以正確使用它。有人請幫我理解這一切。列表適配器和getView函數說明

此外,如果有人可以向我解釋.. BaseAdapter和ArrayAdapter有什麼區別?以及Android附帶的任何其他類型的適配器。

回答

1

getView()使用給定的索引將數據填充到項目的視圖中。作爲參數給出的視圖可能是預先充滿的視圖。如果不是,你必須自己降低它。 ArrayAdapter只需在給定視圖上調用setText,該對象的toString()的結果與數組中的相應索引一起使用。如果你重寫它,你可以做更復雜的東西,比如分配圖片或者填充更多的TextViews。

我推薦以下教程:http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/

+0

所以,在這種情況下。 '公共視圖getView(int position,View convertView,ViewGroup viewGroup){ Task task = task.get(position); [012]} 位置指的是什麼? –

+1

在listView中的位置。這是一個索引。 – Fildor

1

嗨列表adaper的列表視圖提供了看法。

當用戶滾動列表視圖時,getview被調用。

getview用於填充您的視圖與數據,因此名稱適配器。

0

該適配器會爲您做所有的「rember做這個」。如果您通過適配器的方法(例如「add()」)更改列表視圖的後備數據結構,它將觸發所有需要列表視圖的數據更改和更新事件,以顯示數據的新狀態。

2

我所瞭解的是您的適配器構造函數通過活動實例化,然後在活動啓動時調用getView()方法。的{@參數位置,視圖的ViewGroup}

  1. 位置:它是指視圖的位置由適配器給出。請注意它不同於{OnItemClick(AdapterView適配器,視圖v,int位置,長ID)中的位置}}這裏位置是列表項目的位置。 {getView()}中的{position}在列表中的特定對象再次顯示例如後發生變化。當你滾動。

  2. 查看:這裏的視圖是你想通過getView()呈現的視圖。它可以是每行的特定XML佈局。所以這明確指出getView被調用來繪製每一行。這個視圖需要是有效的一個或另一個佈局(默認情況下是LinearLayout)將被選中以保持唯一性。

  3. 的ViewGroup:正如你可能知道和名字說將是你@param的容器:視圖

任何其它點表示讚賞。