2012-12-08 65 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