Fragment如何传递数据给RecyclerView的Adapter?
时间: 2024-09-19 20:05:04 浏览: 53
在Android中,Fragment传递数据给RecyclerView的Adapter通常有两种方法:
1. **利用接口回调**:在Fragment中定义一个接口,Adapter作为该接口的实现者。当Fragment需要更新数据时,调用接口中的方法,然后Adapter接收到通知后更新自己的数据。
```java
// Fragment中的接口
public interface DataProvider {
void updateData(List<String> dataList);
}
// Fragment中传递数据
DataProvider provider = (DataProvider) getTargetFragment(); // 获取目标Fragment
provider.updateData(yourNewData);
// Adapter的实现
public class MyAdapter implements DataProvider {
@Override
public void updateData(List<String> dataList) {
notifyDataSetChanged(); // 更新数据并在适配器中刷新
}
}
```
2. **使用Bundle或ViewModel**:如果数据量较大,可以直接通过Fragment的`setArguments()`方法将数据放入Bundle,然后在Adapter的构造函数中接收这个Bundle。另一种方法是使用ViewModel,Fragment和Adapter共享同一个ViewModel对象,ViewModel负责存储和更新数据。
```java
// Fragment中设置数据
Bundle args = new Bundle();
args.putStringArrayList("data", yourNewData);
setArguments(args);
// Adapter的构造函数接收数据
public MyAdapter(Bundle savedInstanceState) {
if (savedInstanceState != null) {
List<String> dataList = savedInstanceState.getStringArrayList("data");
// 使用数据更新适配器
}
}
```
阅读全文