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

标签 android sqlite fts3

我正在关注 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/

相关文章:

iphone - 以(后缀)结尾并包含在 SQLite FTS 中使用 MATCH 进行的字符串搜索

android - 我应该如何在 Sqlite 中执行此查询?

android - 在 Android 上获取 SQLite 文件

android - 如何使用 ORMLite 为 FTS3 创建虚拟表

java - 在 EditText 内部单击时,矩形 contains() 返回 false

java - Android:ListView 上的 Sqlite

python - 带有嵌套选择的 SQL Delete 语句

android - 如何在不使用 "setImageBitmap()"的情况下加载带有 png 文件的 ImageView?

java - 不读取文件

android - getSupportFragmentManager 不在 DialogFragment 上编译