0

基本上我已经尝试这样做了 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

4

1 回答 1

3

通过在其中实例化一个新适配器,doInBackGround您将失去对您设置的适配器的引用setListAdapter(adapter);因此,您在 OnPostExecute 中通知的适配器不是您的 ListView 中的适配器。

于 2012-11-30T15:30:37.093 回答