在不同的 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);
...
}
我正在开发一个数组适配器,它使用主细节流布局来显示存储在应用程序数据库中的项目列表。
从这个 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);
...
}