我正在關注Android示例的「Searchable Dictionary」,並用一些數據(1200條記錄)預填充我的FTS3數據庫。我想在我的活動初始加載時顯示3個「默認」記錄,但我需要等到所有記錄都插入到FTS3中。當我看我的日誌看Android sqlite數據庫等待數據初始填充完成
10月2日至一十七日:26:44.188:d/WorldClockWidgetActivity(1188):默認城市排名:0
10月2日至一十七日: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擴展SQLiteOpenHelper」正在加載的數據在我的主要活動的列表適配器不能被訪問。
我的問題是我怎麼知道我的數據是否已經加載,所以我可以加載默認值並顯示給用戶?
非常感謝
非常感謝。所以我的主要活動將填充數據庫?在所有的android教程中,我們都在DatabaseHelper類中進行數據的初始設置。 – hurric 2013-02-17 19:00:41
@hurric:「所以我的主要活動將填充數據庫」 - 不。 「在所有的android教程中,我們都是在DatabaseHelper類中初始化數據的設置」 - 我上面的指令不會修改這個。然而,「在所有的android教程中」,一個'DatabaseHelper'類不會出現在精靈之外。相反,程序員創建一個實例並調用'getReadableDatabase()'或'getWriteableDatabase()'。就你而言,我猜測一個活動(或片段)會這樣做。 – CommonsWare 2013-02-17 19:03:06
謝謝。我想我不明白我應該如何組織我的課程。我將執行以下操作:'MainListActivity'來顯示類。 'DatabaseOpenHelper'和'DAO'類。 'DAO'類將有一個'DatabaseOpenHelper'的實例,並在每次使用後打開/關閉它。在我的'MainListActivity'的初始onCreate上,我將創建一個DAO實例,在其中填充原始文本文件中的數據。在ASyncAdapter類中。我的MainListActivity會知道DAO何時完成加載數據,然後查詢我的默認值並顯示給用戶。 – hurric 2013-02-17 19:17:31