2012-12-08 67 views
2

我有一個ArrayAdapter持有更新元素列表(例如,異步加載的新聞項列表)。更改ArrayAdapter中的元素

什麼是適當的模式,以便當元素的值改變時,它更新視圖?

回答

1

更新您可以使用方法如ArrayAdapter#add()ArrayAdapter#addAll()等,這些將更新將自動綁定到適配器的視圖。

或者您也可以在列表上使用相同的方法,即適配器自己讀取並調用ArrayAdapter#notifyDataSetChanged()

+0

add和addAll不是我在尋找的東西:我指的是更新適配器上的單個元素。 – Tordek

+0

你可能注意到沒有'update()'或'replace()'方法,你的問題缺乏細節,所以我仍然不知道你在找什麼......你可以嘗試'insert()'和' remove()'或者'add()','remove()'和sort()',但是我不知道處理什麼類型的數據。 – Sam

1

使用notifyDataSetChanged以反映您的ListView

adapter.notifyDataSetChanged(); 
+0

這是否會觸發整個視圖的更新?這不是沒有效率嗎? (說我只更新一個元素。) – Tordek

+0

只更新一個元素是不太方便的。但可以通過在列表視圖上調用'getChildAt'來引用特定視圖來完成。問題是這隻會對屏幕上的可見行位置有效,所以解決方法是通過屏幕上的第一個可見位置減去此位置http://stackoverflow.com/questions/3724874/how-can-i-update -a單列在列表視圖 – mango