简单解决返回上一个Activity中的adapter数据刷新问题

当一个Activity中用RecyclerView、ListView等显示数据时,点击item进行下一个页面删除和更新数据后需要返回上一个Activity的时候往往需要刷新界面数据。

简单实现如下:

 @Override
    protected void onPause() {
        super.onPause();
        isPause = true; //记录页面已经被暂停
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (isPause){ //判断是否暂停
            isPause = false;
            list = 新数据;
            adapter.setList(list); //需要adapter重新设置list的数据
            adapter.notifyDataSetChanged();//刷新
        }

    }


  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在一个 Activity 结束前将数据传递给上一个 Activity,并刷新 RecyclerView,你可以使用以下步骤实现该功能: 1. 在当前 Activity 定义一个接口,用于回调数据到上一个 Activity。例如,在当前 Activity 创建一个名为 `DataCallback` 的接口,并在接口定义一个 `onDataReceived()` 方法。 ```java public interface DataCallback { void onDataReceived(Data data); } ``` 2. 在当前 Activity 创建一个变量来持有该接口的实例,并在数据准备好后调用接口的方法传递数据。 ```java private DataCallback dataCallback; public void setDataCallback(DataCallback callback) { this.dataCallback = callback; } // 在数据准备好后调用该方法传递数据 private void sendDataToPreviousActivity(Data data) { if (dataCallback != null) { dataCallback.onDataReceived(data); } } ``` 3. 在上一个 Activity 实现该接口,并在 `onDataReceived()` 方法接收数据,并更新 RecyclerView。 ```java public class PreviousActivity extends AppCompatActivity implements DataCallback { private RecyclerView recyclerView; private RecyclerView.Adapter adapter; private List<Data> dataList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_previous); // 初始化 RecyclerView 和适配器 recyclerView = findViewById(R.id.recyclerView); adapter = new MyAdapter(dataList); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(adapter); } @Override public void onDataReceived(Data data) { // 接收到数据后更新 RecyclerView dataList.add(data); adapter.notifyDataSetChanged(); } // 启动当前 Activity 并设置回调接口 private void startCurrentActivity() { Intent intent = new Intent(this, CurrentActivity.class); startActivityForResult(intent, REQUEST_CODE_CURRENT); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_CURRENT && resultCode == RESULT_OK) { // 接收到返回数据后更新 RecyclerView Data receivedData = (Data) data.getSerializableExtra("data"); dataList.add(receivedData); adapter.notifyDataSetChanged(); } } } ``` 4. 在当前 Activity ,当数据准备好后,调用回调方法将数据传递回上一个 Activity。 ```java private void sendDataToPreviousActivity(Data data) { Intent intent = new Intent(); intent.putExtra("data", data); setResult(RESULT_OK, intent); finish(); } ``` 这样,当你在当前 Activity 调用 `sendDataToPreviousActivity()` 方法时,数据会被传递回上一个 Activity,并且 RecyclerView 会被刷新以显示新的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值