3

Android の例の「検索可能な辞書」に従い、FTS3 データベースにいくつかのデータ (1200 レコード) を事前入力しています。アクティビティの初期ロード時に 3 つの「デフォルト」レコードを表示したいのですが、すべてのレコードが FTS3 に挿入されるまで待つ必要があります。私が見るログを見ると

02-17 10:26:44.188: D/WorldClockWidgetActivity(1188): デフォルト都市の数: 0

02-17 10:27:11.668: D/CitiesDatabase(1188): 単語の読み込みが完了しました。

    @Override
    public void onCreate(SQLiteDatabase db) {
        mDatabase = db;
        mDatabase.execSQL(FTS_TABLE_CREATE);
        loadDictionary();
    }

    /**
     * Starts a thread to load the database table with words
     */
    private void loadDictionary() {
        new Thread(new Runnable() {
            public void run() {
                try {
                    loadWords();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }).start();
    }
enter code here

上記を ASyncTask に変更しようとしましたが、問題は、データが読み込まれている "CitiesOpenHelper extends SQLiteOpenHelper" からメイン アクティビティのリスト アダプターにアクセスできないことです。

私の質問は、デフォルト値をロードしてユーザーに表示できるように、データがロードされているかどうかをどのように確認できるかということでした。

どうもありがとう

4

1 に答える 1

3

ステップ1:スレッドに移動loadWords()して削除します。onCreate()

ステップ2:アクティビティまたはフラグメントによって開始されたからgetReadableDatabase()またはgetWriteableDatabase()およびクエリを呼び出し、を設定します。AsyncTaskListAdapteronPostExecute()

于 2013-02-17T18:45:35.623 に答える