基本上我已经尝试过这个该死的超过40个小时 - 阅读所有关于它的线程仍然没有结果!所以我在onPostExecute adapter.notifyDataSetChanged()中发布时无法在列表视图中更新列表适配器;
ArrayAdapter<String> adapter;
private ProgressDialog dialog;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setListAdapter(adapter);
dialog = new ProgressDialog(
Table.this);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMessage("Загружаю. Подождите...");
AsyncTask<Void, Void, Void> loadingTask = new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
dialog.show();
}
@Override
protected Void doInBackground(Void... params) {
........ adapter = new ArrayAdapter<String>(Table.this, android.R.layout.simple_list_item_1,CreateStringArray
.getString(myData, null, null, null, null));
return null;
}
@Override
protected void onPostExecute(Void result) {
adapter.notifyDataSetChanged();
Table.this.
dialog.dismiss();
}
};
loadingTask.execute();
getListView().setOnItemClickListener(this);
}
因此它向我展示了微调器并成功加载并删除它。经过一段时间的调试后,我注意到它成功更改了适配器中的数据。仍然显示它。我正在使用listvew
答案 0 :(得分:3)
通过在doInBackGround
中实例化新的适配器,您将失去对您设置的适配器的引用setListAdapter(adapter);
因此,您在OnPostExecute中通知的适配器不是ListView中的适配器。