Android 中 RecyclerView 4级嵌套例程
时间: 2023-11-16 20:02:22 浏览: 34
RecyclerView 的四级嵌套可以通过在 RecyclerView 的 Adapter 中再次使用 RecyclerView 来实现。下面给出一个简单的示例代码:
```java
public class OuterAdapter extends RecyclerView.Adapter<OuterAdapter.ViewHolder> {
private List<List<List<String>>> mData;
public OuterAdapter(List<List<List<String>>> data) {
mData = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_outer, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
List<List<String>> innerData = mData.get(position);
InnerAdapter innerAdapter = new InnerAdapter(innerData);
holder.mInnerRecyclerView.setAdapter(innerAdapter);
}
@Override
public int getItemCount() {
return mData.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
RecyclerView mInnerRecyclerView;
ViewHolder(View itemView) {
super(itemView);
mInnerRecyclerView = itemView.findViewById(R.id.inner_recycler_view);
mInnerRecyclerView.setLayoutManager(new LinearLayoutManager(itemView.getContext(), LinearLayoutManager.HORIZONTAL, false));
}
}
}
public class InnerAdapter extends RecyclerView.Adapter<InnerAdapter.ViewHolder> {
private List<List<String>> mData;
public InnerAdapter(List<List<String>> data) {
mData = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_inner, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
List<String> innermostData = mData.get(position);
InnermostAdapter innermostAdapter = new InnermostAdapter(innermostData);
holder.mInnermostRecyclerView.setAdapter(innermostAdapter);
}
@Override
public int getItemCount() {
return mData.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
RecyclerView mInnermostRecyclerView;
ViewHolder(View itemView) {
super(itemView);
mInnermostRecyclerView = itemView.findViewById(R.id.innermost_recycler_view);
mInnermostRecyclerView.setLayoutManager(new LinearLayoutManager(itemView.getContext(), LinearLayoutManager.VERTICAL, false));
}
}
}
public class InnermostAdapter extends RecyclerView.Adapter<InnermostAdapter.ViewHolder> {
private List<String> mData;
public InnermostAdapter(List<String> data) {
mData = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_innermost, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String data = mData.get(position);
holder.mTextView.setText(data);
}
@Override
public int getItemCount() {
return mData.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView mTextView;
ViewHolder(View itemView) {
super(itemView);
mTextView = itemView.findViewById(R.id.text_view);
}
}
}
```
以上代码中,OuterAdapter 用于显示最外层的 RecyclerView,InnerAdapter 用于显示第二层的 RecyclerView,InnermostAdapter 用于显示最内层的 RecyclerView。在 OuterAdapter 的 onBindViewHolder 方法中,将 InnerAdapter 设置给了 InnerRecyclerView 。在 InnerAdapter 的 onBindViewHolder 方法中,将 InnermostAdapter 设置给了 InnermostRecyclerView。最后,通过在布局文件中设置 RecyclerView 的 layout_manager 可以控制 RecyclerView 的布局方式。
相关推荐
![.zip](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)