将数据添加到SQLite后的动态显示

时间:2012-10-19 12:03:22

标签: android android-sqlite

我的主屏幕是从数据库查询的名称列表,点击后会显示有关名称的某些信息(电话号码,层次结构,邮件ID等)。我还有编辑和添加新联系人的选项(我添加了按钮)这样做)。一切正常,但是,当我将名称更新到数据库时,我无法立即看到名称。但是当我重新运行应用程序时,我可以看到这些变化。如何动态显示名称, 有效 ? 我能想到的一件事是再次查询数据库,onResume和display.But我觉得它不够高效。 我也可以使用startActivityforResult()但我不能按升序排列它们,我一次上传很多联系人。

代码

    // Make a New Database
    DBContact info = new DBContact(this);
    info.open();
    String[] data = info.queryAll();
    info.close();
    // Display the names
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(Contacts.this,
            android.R.layout.simple_list_item_1, data);
    listview.setAdapter(adapter);

5 个答案:

答案 0 :(得分:1)

您应该使用LoaderManager将数据库数据与数据库适配器挂钩。它会给你带来两个好处 -

  1. 它不会在UI线程上运行以获取数据,因此显示没有延迟。
  2. 如果数据库中发生了某些变化,它将自动刷新数据。
  3. 此处有更多详情 - https://developer.android.com/reference/android/app/LoaderManager.html

答案 1 :(得分:1)

您可以查看使用CursorAdapter或SimpleCursorAdapter,并直接在视图中使用它,而不是将查询结果包装在数组适配器中。

http://developer.android.com/reference/android/widget/CursorAdapter.html

答案 2 :(得分:1)

在文档中查看notifyDataSetChanged()。将数据添加到数据库后,请调用此方法更新列表。

答案 3 :(得分:1)

您需要完成的2项任务:

  1. 在数据库中添加数据
  2. 检查数据是否已成功插入,然后在适配器中添加相同的数据。修改适配器中的数据后,请不要忘记调用 notifyDataSetChanged()

答案 4 :(得分:0)

作为解决方法尝试以这种方式重新启动加载程序:

getLoaderManager().restartLoader(0, null, this);