我希望能夠進入我的ArrayAdapter的觀點:如何在ArrayAdapter中一次更新一個視圖?
public View getView(int position, View convertView, ViewGroup parent)
我不知道我怎麼可以訪問此:
View myView = myArrayAdapter.getView(myPosition, myView, ?);
我不知道我怎麼能得到的ViewGroup父?
我希望能夠進入我的ArrayAdapter的觀點:如何在ArrayAdapter中一次更新一個視圖?
public View getView(int position, View convertView, ViewGroup parent)
我不知道我怎麼可以訪問此:
View myView = myArrayAdapter.getView(myPosition, myView, ?);
我不知道我怎麼能得到的ViewGroup父?
更新:
嘗試增加一個字段到在保持背景資源/顏色返回視圖時要使用的數據集的數據,並且在getView做
holder.background = dataSet.get(position).getBackground()
如果你不知道我在談論這個事情持有人,檢查How to load the Listview "smoothly" in android
老:
我想說ListView包含的適配器是父ViewGroup。
無論如何,爲什麼不使用包含ArrayAdapter的ListView? ListView是視圖的容器,而不是適配器,它只保存數據集合,並在ListView要求它們時(f.e,滾動時)按需創建並返回視圖。即使您能夠獲取位置X的視圖,我也會說這不起作用,因爲您作爲參數傳遞的convertView不是ListView持有和所示的那個。
考慮到在一個ListView中,在任何給定的時刻最多隻有7-8個視圖(我不知道確切的數字),而ListView所做的是通過調用適配器的getview來填充它們。
這就是說,要更新單行(單個視圖),您需要更新適配器的數據收集。然後,推測,試圖從ListView中獲取該視圖並使其無效,但我懷疑這會起作用。
我認爲這些概念是正確的,如果他們錯了我會很感激,如果有人糾正我。
爲什麼要一次只更新一個視圖?
嘛,據我瞭解,你不認爲在一般Adapter
作爲源的AdapterView
所以getView
合同情況如下:
params中:inPosition
,convertView
,viewParent
結果:查看女巫會顯示在位置inPosition
上,如果數據不爲空,則可以使用convertView
綁定數據,返回的視圖將附加到viewParent
。
所以,如果你想獲得視圖,將通過在特定位置適配器視圖中顯示,爲什麼不只是調用
AdapterView<?> adapterView = getAdapterView();
View myView = adapterView.getChildAt(position);
如果你想改變顯示你應該使用特定位置圖方式
Adapter myAdapter = getAdapter();
//change data inside adapter
myAdapter.notifyDataSetChanged();
我要讓行選擇看上去粘粘的,所以我想更改選定視圖的背景。 – 2010-09-30 09:07:39
我已經更新了答案。此外,在您的方案中遵循的規則是更新整個ListView,而不是一行。 – Maragues 2010-09-30 09:16:38