Android sqlite数据库等待初始数据填充完成
我正在遵循Android示例的“可搜索字典”,并用一些数据(1200条记录)预填充我的FTS3数据库。我想在活动的初始加载时显示3条“默认”记录,但我需要等到所有记录都插入FTS3。当我看日志时,我看到 02-17 10:26:44.188:D/WorldClockWidgetActivity(1188):#默认城市数:0 02-17 10:27:11.668:D/CitiesDatabase(1188):完成加载单词Android sqlite数据库等待初始数据填充完成,android,sqlite,fts3,Android,Sqlite,Fts3,我正在遵循Android示例的“可搜索字典”,并用一些数据(1200条记录)预填充我的FTS3数据库。我想在活动的初始加载时显示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
@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 Extendes SQLiteOpenHelper”访问我的主要活动的列表适配器
我的问题是如何判断数据是否已加载,以便加载默认值并显示给用户
非常感谢第1步:将loadWords()
移动到onCreate()
中并清除线程
步骤2:调用
getReadableDatabase()
或getWriteableDatabase()
并从活动或片段启动的AsyncTask
中查询,在onPostExecute()中设置ListAdapter
,非常感谢。那么我的主要活动将填充数据库?在所有android教程中,我们在DatabaseHelper类中进行数据的初始设置。@hurric:“因此我的主要活动将填充数据库”--否。“在所有android教程中,我们在DatabaseHelper类中进行数据的初始设置”--我的上述说明不会修改此设置。然而,“在所有android教程中,DatabaseHelper
类不会出现在精灵创建的以太之外。相反,程序员创建它的一个实例并调用getReadableDatabase()
或getWriteableDatabase()
。在您的情况下,我猜是一个活动(或片段)实现了这一点。谢谢。我想我不明白我应该如何组织我的课程。我将执行以下操作:MainListActivity
以显示类DatabaseOpenHelper
和一个DAO
类DAO
类将有一个DatabaseOpenHelper
的实例,每次使用后我都会打开/关闭它。在最初创建myMainListActivity
时,我将创建一个DAO实例,在该实例中,我从原始文本文件填充数据。在ASyncAdapter类中。我的MainListActivity将知道DAO何时完成数据加载,然后查询我的默认值并显示给用户。