You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:从AddNewPassword页面返回后如何刷新RecyclerView?

解决从AddNewPassword返回后主界面RecyclerView刷新的问题

方法一:使用Activity Result API(推荐,适配AndroidX)

startActivityForResult已被废弃,现在用Activity Result Contract处理页面返回后的回调,能精准判断是否需要刷新。

步骤:

  1. 在MainScreen中注册Activity Result Launcher
  2. 点击添加按钮时用launch启动页面
  3. 在回调中触发数据刷新

代码示例:

首先在MainScreen类中定义Launcher:

private ActivityResultLauncher<Intent> addPasswordLauncher = registerForActivityResult(
    new ActivityResultContracts.StartActivityForResult(),
    result -> {
        if (result.getResultCode() == Activity.RESULT_OK) {
            // 重新加载最新密码数据
            loadLatestPasswords(); // 替换成你获取数据的方法
            // 通知适配器刷新UI
            yourPasswordAdapter.notifyDataSetChanged();
        }
    }
);

修改添加按钮的点击事件:

addData.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = new Intent(MainScreen.this, AddNewPassword.class);
        i.putExtra("id", (String) null);
        i.putExtra("Platform", "");
        i.putExtra("User", "");
        i.putExtra("password", "");
        i.putExtra("boolean", false);
        // 用launch启动页面
        addPasswordLauncher.launch(i);
    }
});

在AddNewPassword页面完成添加后,设置返回结果:

// 保存按钮点击事件中
saveBtn.setOnClickListener(v -> {
    // 执行保存密码的逻辑(写入数据库等)
    
    // 通知主界面可以刷新
    setResult(Activity.RESULT_OK);
    finish();
});

方法二:重写MainScreen的onResume方法

每次从子页面返回主界面时,onResume会被自动调用,在这里统一刷新数据。

代码示例:

@Override
protected void onResume() {
    super.onResume();
    // 重新获取最新数据
    loadLatestPasswords();
    // 检查适配器不为空时刷新
    if (yourPasswordAdapter != null) {
        yourPasswordAdapter.notifyDataSetChanged();
    }
}

注意事项:

之前调用初始化RecyclerView方法无效,大概率是因为:

  • 初始化方法没有重新从数据源(数据库/本地存储)拉取最新数据
  • 没有调用适配器的notifyDataSetChanged()方法触发UI更新

内容的提问来源于stack exchange,提问作者user20530242

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:40:27