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();
    }

然后运行程序,在修改数据后返回,则可以看到更新后的数据显示。