在不同的 activity 中修改数据库时如何重新填充数组适配器?

How to repopulate an arrayadapter when database is modified in a different activity?

我正在开发一个数组适配器,它使用主细节流布局来显示存储在应用程序数据库中的项目列表。

从这个 activity/fragment 开始,我调用另一个 activity 来向数据库中添加一条新记录。添加新记录后,此 activity 完成,用户返回到主从流程布局。

然后我希望此视图与在新 activity 中创建的更新数据库一起显示。我不是 100% 确定什么是最好的实现方式。我在考虑 onResume 方法,我调用了一个用新数据重新填充数组适配器的函数,但这似乎是错误的方式,因为即使数据库中没有更改数据,它也会始终重新填充。

如果您将一个值保存到将充当标志的共享 prefrances 怎么样: 让我们说这个值是 x : 1 如果它改变了,如果没有改变则为 0 。

默认情况下,它应该为零。每当用户访问新的 activity 并且数据库的内容发生更改时,该值应更改回 1。(否则它将保持为零)。

然后 onResume 你检查这个值,如果它是零那么你不重新填充列表。但是,如果它是 1,则将其改回零,从数据库更新列表,然后在适配器上调用 notifydatasetchanged()。

祝你好运

您始终可以使用 startActivityForResult() 并通知调用方 activity 数据是否已更改。

您可以使用 startActivityForResult() 启动 activity 添加项目 并在列表 activity.

中实现回调 onActivityResult()

如果已成功将元素添加到数据库,您可以重新填充 onActivityResult() 中的列表项。

看到这个http://developer.android.com/training/basics/intents/result.html

例如listActivity

private void addItem(){
    ...
    startActivityForResult(intent, ADD_REQUEST);
    ...
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == ADD_REQUEST && resultCode == RESULT_OK) {
        // here you can repopulate the list
    }
}

和 addItem activity

private void addingItem(){
    ...
    // when the item saved successfully you can set the results to ok
    setResult(RESULT_OK);
    ...
}