我的主屏幕是从数据库查询的名称列表,点击后会显示有关名称的某些信息(电话号码,层次结构,邮件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);
答案 0 :(得分:1)
您应该使用LoaderManager将数据库数据与数据库适配器挂钩。它会给你带来两个好处 -
此处有更多详情 - 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项任务:
答案 4 :(得分:0)
作为解决方法尝试以这种方式重新启动加载程序:
getLoaderManager().restartLoader(0, null, this);