我想刷新ListView而不重新加载页面

时间:2012-02-18 02:12:35

标签: android android-layout android-intent android-widget

我希望在不重新加载页面的情况下刷新ListView。更准确地说,我有一项服务正在ListView中为Activity发送数据,但ActivityService获取数据之前很久就会加载ListView。所以我需要能够在Activity已经加载后加载/重新加载{{1}}。

3 个答案:

答案 0 :(得分:1)

只要您想要刷新notifyDataSetChanged() ListView,就拨打Adapter

答案 1 :(得分:1)

我发现notifyDataSetChanged only works if you use the add, insert, remove, and clear functions on the Adapter,所以我最终在类似的实现中采用以下方式:

AsyncTask获取doInBackground中的所有数据。然后,完成后我在onPostExecute中第一次设置列表适配器。为了让用户知道正在加载某些内容,我只需在TextView上放置一个Listview,并在onPreExecute中将其文本设置为“正在加载...”,然后将其隐藏起来数据准备好后onPostExecute

如果您需要刷新数据,只需再次执行AsyncTask

我喜欢这种方式,因为你只设置ArrayAdapter一次(即当你最终获得所有数据时)。如果您需要,Here更多关于AsyncTask。文档有一些很好的示例代码。

答案 2 :(得分:1)

我会说使用IntentService代替Service。通过使用IntentService,您可以将数据发送到后台Service,并在触发BroadCastReceiver以更新您的用户界面时接收更新的数据。 Here是一个完整的示例,说明如何使用IntentService来完成任务。