0

これは、リストビュー項目をロードするための私のコードです

  @SuppressLint("DefaultLocale")
   public class SearchList extends Activity {

  private ArrayList<String> founded = new ArrayList<String>();
  private OrderAdapter m_adapter;


ListView lv;

/** Called when the activity is first created. */
@SuppressLint("DefaultLocale")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.searchlist);
    lv = (ListView) findViewById(R.id.listView1);

    new Load().execute();

    m_adapter = new OrderAdapter(this, R.layout.itemview, founded);

    lv.setAdapter(m_adapter);
    lv.setTextFilterEnabled(true);
    }

  private class Load extends AsyncTask<Void, Void, Void> {

    ProgressDialog progress;

    @Override
    protected void onPreExecute() {
        progress = new ProgressDialog(SearchList.this);
        progress.setMessage("loading....");
        progress.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
             try {

            for (int i = 0; i <500000; i++) {
             founded.add("String "+i);
               }

        } catch (Exception e) {

        }
            return null;
    }

    @Override
    protected void onPostExecute(Void result) {

        // write display tracks logic here
        progress.dismiss(); // dismiss dialog
    }
}

コードを実行すると、進行状況ダイアログが既に表示されますが、閉じた後、リストが空であり、項目が追加されていないことがわかりました。何が問題で、ダイアログの読み込み後にリストが空である理由がわかりません.Plsは助けが必要です前進。

4

1 に答える 1

0

AsyncTask の完了前にアダプター データの取得と ListAdapter の設定にonPostExecute使用AsyncTaskしているため、listadapter を設定します。AsyncTask の完了後に ListAdapter を設定してみてください。
これらを追加します。

 m_adapter = new OrderAdapter(this, R.layout.itemview, founded);
lv.setAdapter(m_adapter);
lv.setTextFilterEnabled(true);

onPostExecuteメソッドの代わりにonCreateメソッド内の行

 @Override
    protected void onPostExecute(Void result) {

        // write display tracks logic here
        progress.dismiss(); // dismiss dialog
     m_adapter = new OrderAdapter(YourActivity.this, R.layout.itemview, founded);
     lv.setAdapter(m_adapter);
     lv.setTextFilterEnabled(true);
    }
于 2014-06-15T08:09:57.070 に答える