在Android中,要在RecyclerView内部使用另一个RecyclerView,可以创建一个嵌套的RecyclerView适配器。
首先,在布局文件中定义外部RecyclerView的Item布局文件(outer_item.xml),如下所示:
接下来,创建内部RecyclerView的Item布局文件(inner_item.xml),如下所示:
然后,创建内部RecyclerView的适配器(InnerAdapter.java),如下所示:
public class InnerAdapter extends RecyclerView.Adapter {
private List dataList;
public InnerAdapter(List dataList) {
this.dataList = dataList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.inner_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
// bind data to inner item views
}
@Override
public int getItemCount() {
return dataList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
// inner item views
public ViewHolder(@NonNull View itemView) {
super(itemView);
// initialize inner item views
}
}
}
最后,在外部RecyclerView的适配器(OuterAdapter.java)中,创建和设置内部RecyclerView的适配器,如下所示:
public class OuterAdapter extends RecyclerView.Adapter {
private List> dataList;
public OuterAdapter(List> dataList) {
this.dataList = dataList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.outer_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
List innerDataList = dataList.get(position);
InnerAdapter innerAdapter = new InnerAdapter(innerDataList);
holder.innerRecyclerView.setAdapter(innerAdapter);
}
@Override
public int getItemCount() {
return dataList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
RecyclerView innerRecyclerView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
innerRecyclerView = itemView.findViewById(R.id.innerRecyclerView);
innerRecyclerView.setLayoutManager(new LinearLayoutManager(itemView.getContext()));
}
}
}
现在,可以使用OuterAdapter作为外部RecyclerView的适配器,内部RecyclerView将嵌套在每个外部RecyclerView的Item中。
请注意,这里假设你已经有了外部RecyclerView的数据源(dataList),其中每个Item都包含一个内部RecyclerView的数据源(innerDataList)。