Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android sqlite数据库等待初始数据填充完成_Android_Sqlite_Fts3 - Fatal编程技术网

Android sqlite数据库等待初始数据填充完成

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

我正在遵循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(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
的实例,每次使用后我都会打开/关闭它。在最初创建my
MainListActivity
时,我将创建一个DAO实例,在该实例中,我从原始文本文件填充数据。在ASyncAdapter类中。我的MainListActivity将知道DAO何时完成数据加载,然后查询我的默认值并显示给用户。