Java代码实现垂直recyclerview嵌套水平recyclerview,刷新子recyclerview
时间: 2023-12-11 22:40:24 浏览: 29
下面是一个简单的示例代码,演示如何在垂直 RecyclerView 中嵌套水平 RecyclerView,并刷新子 RecyclerView:
首先,创建一个适配器类 VerticalAdapter 用于垂直 RecyclerView:
```java
public class VerticalAdapter extends RecyclerView.Adapter<VerticalAdapter.VerticalViewHolder> {
private List<List<String>> data; // 存储数据的二维列表
// 构造方法,传入数据
public VerticalAdapter(List<List<String>> data) {
this.data = data;
}
@NonNull
@Override
public VerticalViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_vertical, parent, false);
return new VerticalViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull VerticalViewHolder holder, int position) {
List<String> rowData = data.get(position);
HorizontalAdapter horizontalAdapter = new HorizontalAdapter(rowData);
holder.horizontalRecyclerView.setAdapter(horizontalAdapter);
holder.horizontalRecyclerView.setLayoutManager(new LinearLayoutManager(holder.horizontalRecyclerView.getContext(), LinearLayoutManager.HORIZONTAL, false));
}
@Override
public int getItemCount() {
return data.size();
}
public static class VerticalViewHolder extends RecyclerView.ViewHolder {
RecyclerView horizontalRecyclerView;
public VerticalViewHolder(@NonNull View itemView) {
super(itemView);
horizontalRecyclerView = itemView.findViewById(R.id.horizontal_recycler_view);
}
}
}
```
然后,创建一个适配器类 HorizontalAdapter 用于水平 RecyclerView:
```java
public class HorizontalAdapter extends RecyclerView.Adapter<HorizontalAdapter.HorizontalViewHolder> {
private List<String> data; // 存储数据的列表
// 构造方法,传入数据
public HorizontalAdapter(List<String> data) {
this.data = data;
}
@NonNull
@Override
public HorizontalViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_horizontal, parent, false);
return new HorizontalViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull HorizontalViewHolder holder, int position) {
String item = data.get(position);
holder.textView.setText(item);
}
@Override
public int getItemCount() {
return data.size();
}
public static class HorizontalViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public HorizontalViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.text_view);
}
}
}
```
最后,在你的 Activity 或 Fragment 中使用垂直 RecyclerView:
```java
public class MainActivity extends AppCompatActivity {
private RecyclerView verticalRecyclerView;
private VerticalAdapter verticalAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
verticalRecyclerView = findViewById(R.id.vertical_recycler_view);
verticalRecyclerView.setLayoutManager(new LinearLayoutManager(this));
// 模拟数据
List<List<String>> data = new ArrayList<>();
for (int i = 0; i < 5; i++) {
List<String> rowData = new ArrayList<>();
for (int j = 0; j < 10; j++) {
rowData.add("Item " + j);
}
data.add(rowData);
}
verticalAdapter = new VerticalAdapter(data);
verticalRecyclerView.setAdapter(verticalAdapter);
}
// 刷新指定位置的子 RecyclerView
private void refreshChildRecyclerView(int position) {
verticalAdapter.notifyItemChanged(position);
}
}
```
这样就实现了垂直 RecyclerView 嵌套水平 RecyclerView,并可以通过调用 `refreshChildRecyclerView` 方法来刷新指定位置的子 RecyclerView。