我正在使用一个数组适配器,它使用主详细信息流布局,以显示存储在apps数据库中的项目列表。
从这个活动/片段中,我调用另一个活动来向数据库添加新记录。添加新记录后,此活动将完成,用户将返回到主详细信息流布局。
然后,我希望使用在新活动中创建的更新数据库显示此视图。我不是100%确定实现这个的最佳方法。我在onResume方法中考虑过,我调用了一个用新数据重新填充数组适配器的函数,但这似乎是错误的方式,因为它总是会重新填充,即使数据库中没有更改数据也是如此。
答案 0 :(得分:1)
您可以使用startActivityForResult()
开始添加项目的活动
并在列表活动中实现回调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活动
private void addingItem(){
...
// when the item saved successfully you can set the results to ok
setResult(RESULT_OK);
...
}
答案 1 :(得分:0)
如果将值保存到将充当标志的共享prefrance,那该怎么办: 让我们说如果改变,则值为x:1,否则为0。
默认情况下,它应该是零。每当用户访问新活动并且数据库的内容发生变化时,该值应该更改回1.(如果不是,它将保持为零)。
然后onResume你检查这个值是否为零然后你没有重新填充列表。但是,如果它为1,则将其更改回零,从数据库更新列表,并在适配器上调用notifydatasetchanged()。
祝你好运
答案 2 :(得分:0)
您始终可以使用startActivityForResult()
并通知调用活动数据是否已更改。