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);

}

そのため、スピナーが表示され、正常にロードおよび削除されます。しばらくデバッグした後、アダプターのデータが正常に変更されていることに気付きました。それでもへこんで表示します。リストビューで作業しています

4

1 に答える 1

3

新しいアダプターをインスタンス化するdoInBackGroundと、設定したアダプターへの参照が失われます。setListAdapter(adapter);したがって、OnPostExecute で通知するアダプターは、ListView のものではありません。

于 2012-11-30T15:30:37.093 に答える