Android中从一个Activity返回上一个Activity数据刷新
项目场景:
在Android Studio中使用Listview显示数据,并点击item后跳转到另一个Activity进行数据的修改编辑,点击返回键后返回到上一个Activity,同时数据进行更新显示。
问题描述
在进行修改后,返回上一个Activity之后,数据没有更新,还是原来未修改的数据,需要返回再次返回后重新进入该Activity之后,数据才可以更新显示。
原因分析:
在修改界面修改数据之后,在点击返回时,程序只是通过finish()结束了当前的activity,对于上一个activity来说,数据并没有进行更新,还是之前未修改过的数据。
解决方案:
第一个Activity中原本的代码如下:
public class ManageActivity extends BaseActivity {
@BindView(R.id.rl_back)
RelativeLayout rlBack;
@BindView(R.id.tv_title)
TextView tvTitle;
@BindView(R.id.lv_data)//listview
ListView lvData;
DengjiAdapter dengjiAdapter;//适配器
Dengji dengji;
@Override
protected int getLayoutId() {
return R.layout.tab_guihua;
}
@Override
protected void init() {
dengji = (Dengji) getIntent().getSerializableExtra("detail");
tvTitle.setText("查询物品");
rlBack.setOnClickListener(new View.OnClickListener() {//返回首页
@Override
public void onClick(View v) {
finish();
}
});
try {
List<Dengji> dengjiList = App.dbManager.findAll(Dengji.class);
List<Dengji> dengj = new ArrayList<>();
if (dengjiList != null) {
for (int i = 0; i < dengjiList.size(); i++) {
if (App.getInstance().userBean.getUser_id().equals(dengjiList.get(i).getUerid())) {
dengj.add(dengjiList.get(i));
}
}
dengjiAdapter = new DengjiAdapter(this, dengj);
lvData.setAdapter(dengjiAdapter);
}
} catch (DbException e) {
e.printStackTrace();
}
}
}
该代码无法在返回时进行数据的自动更新,所以在最后加一个自动更新的函数。
@Override //这里是实现了自动更新
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
init();
}
然后运行程序,在修改数据后返回,则可以看到更新后的数据显示。