以网格布局管理器为子项的可扩展 RecyclerView
Expandable RecyclerView with Grid Layout Manager as child
我想要一个像可展开的 ListView 一样可折叠的 RecyclerView,并且每个父级的子级将呈现一个 GridView 布局管理器。
可能吗?谁能指导我如何做到这一点?
谢谢
您可以使用 Expandable RecyclerVew
,对于儿童视图,请使用其他 RecyclerView
和 GridLayoutManager
您可以使用这个 example of Expandable RecyclerView。它提供了一个 Expandable RecyclerView,其中包含可以单独展开以在二维滚动网格中显示其子项的组项。每个网格项目都可以选择。
工作原理:每个 ChildViewHolder 对象从 RecyclerView 适配器接收一个数据数组以显示在网格行中。然后它将其行的布局分解为大小相等的矩形单元格。每个单元格显示一条数据。
希望这对任何正在寻找它的人有所帮助。
有一个完整的例子here of how implement an Expandable GridView using this library。
基本上,您使用库将您的项目分组,以便每个部分都有一个 header,但您可以实现它 yourself。
然后添加 GridLayoutManager
,定义每行的列数(本例中为 2 列)并将 header 的跨度大小设置为每行 2 列,children 每行 1 列的跨度大小:
GridLayoutManager glm = new GridLayoutManager(getContext(), 2);
glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(sectionAdapter.getSectionItemViewType(position)) {
case SectionedRecyclerViewAdapter.VIEW_TYPE_HEADER:
return 2;
default:
return 1;
}
}
});
recyclerView.setLayoutManager(glm);
为了 expand/collapse 部分,请检查 example 中 expanded
变量的使用。
我想要一个像可展开的 ListView 一样可折叠的 RecyclerView,并且每个父级的子级将呈现一个 GridView 布局管理器。
可能吗?谁能指导我如何做到这一点? 谢谢
您可以使用 Expandable RecyclerVew
,对于儿童视图,请使用其他 RecyclerView
和 GridLayoutManager
您可以使用这个 example of Expandable RecyclerView。它提供了一个 Expandable RecyclerView,其中包含可以单独展开以在二维滚动网格中显示其子项的组项。每个网格项目都可以选择。
工作原理:每个 ChildViewHolder 对象从 RecyclerView 适配器接收一个数据数组以显示在网格行中。然后它将其行的布局分解为大小相等的矩形单元格。每个单元格显示一条数据。
希望这对任何正在寻找它的人有所帮助。
有一个完整的例子here of how implement an Expandable GridView using this library。
基本上,您使用库将您的项目分组,以便每个部分都有一个 header,但您可以实现它 yourself。
然后添加 GridLayoutManager
,定义每行的列数(本例中为 2 列)并将 header 的跨度大小设置为每行 2 列,children 每行 1 列的跨度大小:
GridLayoutManager glm = new GridLayoutManager(getContext(), 2);
glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
switch(sectionAdapter.getSectionItemViewType(position)) {
case SectionedRecyclerViewAdapter.VIEW_TYPE_HEADER:
return 2;
default:
return 1;
}
}
});
recyclerView.setLayoutManager(glm);
为了 expand/collapse 部分,请检查 example 中 expanded
变量的使用。