我希望在不重新加载页面的情况下刷新ListView
。更准确地说,我有一项服务正在ListView
中为Activity
发送数据,但Activity
在Service
获取数据之前很久就会加载ListView
。所以我需要能够在Activity
已经加载后加载/重新加载{{1}}。
答案 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
来完成任务。