我有一个 ListView 来显示数据列表,我需要先从数据库中获取这些数据 - 加载发生在 AsyncTask 中。
现在我想在 AsyncTask 完成加载后立即刷新我的列表 - 我正在使用它来调用adapter.notifyDataSetChanged();
我的 Activity,但列表没有刷新。
完整代码:
在 OnCreate 中:
adapter = new SimpleAdapter(ShopSwitchActivity.this, listData,
android.R.layout.simple_list_item_2,
new String[] {"name", "address"},
new int[] {android.R.id.text1,
android.R.id.text2});
listView.setAdapter(adapter);
AsyncTask<String, Void, List<Map<String,String>>> task = new LoadList(ShopSwitchActivity.this).execute();
try {
listData = task.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
任务完成后:
@Override
public void onTaskCompleted() {
adapter.notifyDataSetChanged();
}
listData = task.get();
返回预期的结果,它只是没有显示在列表中。(没有崩溃或任何事情,每一行都被调用)
我在这里错过了什么?
编辑:工作代码:
@Override
public void onTaskCompleted() {
adapter = new SimpleAdapter(ShopSwitchActivity.this, listData,
android.R.layout.simple_list_item_2,
new String[] {"name", "address"},
new int[] {android.R.id.text1,
android.R.id.text2});
listView.setAdapter(adapter);
}
而不仅仅是
@Override
public void onTaskCompleted() {
adapter.notifyDataSetChanged();
}