0

リストビューの作成元となる sqlite データベースにデータを入力する Web から情報をロードしているときに、進行状況ダイアログを表示しようとしています。情報のダウンロード中に進行状況ダイアログ ボックスを表示する非同期クラスを作成しましたが、その後リストビューは空です。これはおそらく、リストビューが非同期の前に既に読み込まれているためです。リストビューをリロードするにはどうすればよいですか、またはこれを正しい方法で行うにはどうすればよいですか? ここに私がこれまでに持っているものがあります(ディスプラグするには長すぎるため、バックグラウンド処理を省略しました):

private class DownloadInfo extends AsyncTask <Void, Void, Void>{
    //////////////////Open Dialog before execution ///////////
private ProgressDialog dialog;
    protected void onPreExecute(){
        dialog = new ProgressDialog(CandidatesList.this);
        dialog.setMessage("Loading Candidates from Webserver");
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
        dialog.show();
    }
    ///////////////Background Processing//////////////////
    @Override
    protected Void doInBackground(Void... dbArray) {
    ////Load information from webserver and put it in sqlite///
        return null;

    }

    ///////After the processing is done //////////////
    protected void onPostExecute(Void unused) {
        dialog.dismiss();
    }

}

そして、作成時は次のとおりです。

DownloadInfo task = new DownloadInfo();
    task.execute();
Cursor c = db.getAllCandidates();
    candidates = new String[c.getCount()];
    if (c.moveToFirst()) {
        int i = 0;
        do {
            candidates[i] = c.getString(1);// insert Name into candidate
                                            // Array
            i++;
        } while (c.moveToNext());
    }
    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item,
            candidates));

助けてください、ありがとう

4

1 に答える 1

1

カーソル情報をデータベースから ListView に自動的にロードする場合は、ListViewにSimpleCursorAdapterを使用します。(非同期が終了した後で、notifyDataSetChanged() を呼び出す必要がある場合があります。)

于 2012-04-20T19:27:53.407 に答える