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

时间:2013-02-17 18:42:50

标签: android sqlite fts3

我正在关注Android示例的'Searchable Dictionary'并使用一些数据(1200条记录)预先填充我的FTS3数据库。我希望在我的活动的初始加载时显示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”访问我的主活动列表适配器。

我的问题是如何判断我的数据是否已加载,以便我可以加载默认值并显示给用户?

非常感谢

1 个答案:

答案 0 :(得分:3)

步骤1:将loadWords()移至onCreate()并删除该帖子。

第2步:在getReadableDatabase() getWriteableDatabase()的{​​{1}}中设置AsyncTaskListAdapter来自您的活动或片段启动的onPostExecute()