我正在关注 Android 示例的“可搜索字典”,并使用一些数据(1200 条记录)预填充我的 FTS3 数据库。我想在我的 Activity 初始加载时显示 3 个“默认”记录,但我需要等到所有记录都已插入 FTS3。当我查看日志时,我看到了
02-17 10:26:44.188: D/WorldClockWidgetActivity(1188): 默认城市数:0
02-17 10:27:11.668: D/CitiesDatabase(1188): DONE loading words.
@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”访问我的主要 Activity 的列表适配器。
我的问题是如何判断我的数据是否已加载,以便加载默认值并显示给用户?
非常感谢
最佳答案
第 1 步:将 loadWords()
移动到 onCreate()
中并摆脱线程。
第 2 步:调用 getReadableDatabase()
或 getWriteableDatabase()
并从由您的 Activity 或 fragment 启动的 AsyncTask
进行查询,设置onPostExecute()
中的 ListAdapter
。
关于Android sqlite 数据库等待初始数据填充完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924660/