Android 列表嵌套
时间: 2023-10-25 19:12:37 浏览: 86
列表的嵌套
Android 中的列表嵌套可以通过 RecyclerView 和嵌套布局实现。
对于 RecyclerView 嵌套,你可以在 RecyclerView 的 Adapter 中再次使用 RecyclerView。在这种情况下,你需要为每个 RecyclerView 设置一个不同的布局管理器和适配器。例如,你可以在父 RecyclerView 的 Adapter 中为每个子 RecyclerView 设置一个 LinearLayoutManager 或 GridLayoutManager。
示例代码:
```java
public class ParentAdapter extends RecyclerView.Adapter<ParentAdapter.ViewHolder> {
private List<List<String>> mData;
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_parent, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
List<String> childData = mData.get(position);
ChildAdapter childAdapter = new ChildAdapter(childData);
holder.childRecyclerView.setLayoutManager(new LinearLayoutManager(holder.itemView.getContext()));
holder.childRecyclerView.setAdapter(childAdapter);
}
@Override
public int getItemCount() {
return mData.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
RecyclerView childRecyclerView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
childRecyclerView = itemView.findViewById(R.id.child_recycler_view);
}
}
}
public class ChildAdapter extends RecyclerView.Adapter<ChildAdapter.ViewHolder> {
private List<String> mData;
public ChildAdapter(List<String> data) {
mData = data;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_child, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.textView.setText(mData.get(position));
}
@Override
public int getItemCount() {
return mData.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.text_view);
}
}
}
```
对于嵌套布局,你可以在一个列表项中嵌套另一个 RecyclerView 或 ListView。在这种情况下,你需要确保子列表的高度不会影响父列表的性能。
示例代码:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/parent_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/child_recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/parent_text_view"
android:nestedScrollingEnabled="false" />
</RelativeLayout>
```
阅读全文