RecyclerView跳转到下一个Activity,返回到上一个Activity后要请求数据,数据位置不变
时间: 2024-02-09 15:13:30 浏览: 68
在RecyclerView跳转到下一个Activity后,如果数据位置不变,那么可以在返回上一个Activity时不需要重新请求数据,只需要重新设置RecyclerView的Adapter即可。具体实现步骤如下:
1. 在下一个Activity中,获取RecyclerView选中的数据位置position,以及需要传递的数据data。
2. 在返回上一个Activity时,将选中的数据位置position和需要传递的数据data通过Intent传递回上一个Activity。
3. 在上一个Activity的onActivityResult()方法中获取传递回来的数据,并将数据设置到RecyclerView的Adapter中对应的位置上。
示例代码如下所示:
在下一个Activity中跳转到上一个Activity的代码:
```java
// 获取RecyclerView选中的数据位置position和需要传递的数据data
int position = recyclerView.getChildAdapterPosition(view);
String data = dataList.get(position);
// 将选中的数据位置position和需要传递的数据data通过Intent传递回上一个Activity
Intent intent = new Intent();
intent.putExtra("position", position);
intent.putExtra("data", data);
setResult(RESULT_OK, intent);
finish();
```
在上一个Activity中接收数据并设置Adapter的代码:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
int position = data.getIntExtra("position", -1);
String data = data.getStringExtra("data");
if (position != -1) {
// 将数据设置到RecyclerView的Adapter中对应的位置上
dataList.set(position, data);
adapter.notifyItemChanged(position);
}
}
}
```
在这个示例代码中,假设RecyclerView中的数据是字符串类型的,存储在dataList中。在下一个Activity中,通过getChildAdapterPosition()方法获取RecyclerView选中的数据位置position,并通过dataList.get(position)方法获取选中的数据data。然后将选中的数据位置和数据通过Intent传递回上一个Activity。
在上一个Activity中,通过onActivityResult()方法获取传递回来的数据,并将数据设置到RecyclerView的Adapter中对应的位置上。在这里,我们通过notifyItemChanged()方法更新RecyclerView的Adapter,以展示更新后的数据。
阅读全文