RecyclerView中的多个LayoutManager

naf*_*aka 4 android

我使用StaggeredGridLayoutManager制作了RecyclerView,如下所示:

交错

我需要在它上面添加一些TextView(如LinearLayoutManager中的一个colum).它就像上面的LinearLayoutManager和底部的StaggeredGridLayoutManager.像这样的东西:

在此输入图像描述

我怎样才能实现这一目标?在这里真的很困惑,请帮忙.

2015年10月29日更新:

我在这里结合denis_lor和mato的答案解决它: 使用RecyclerView跨越多个列

mar*_*mor 5

滚动时您希望发生什么?

如果顶视图应该保持可见,您可以RecyclerViewLinearLayout带有 2 个子项的TextView和包裹RecyclerView

如果你想让它滚出,你可以使用LayoutManager.setSpanSizeLookup,像这样:

            layoutManager.setSpanSizeLookup(new SpanSizeLookup() {

                @Override
                public int getSpanIndex(int position, int spanCount) {
                    return position % spanCount;
                }

                @Override
                public int getSpanSize(int position) {
                    if (position != 0) {
                        return layoutManager.getSpanCount();
                    }
                    return 1;
                }
            });
Run Code Online (Sandbox Code Playgroud)


den*_*lor 5

关键是你的adapter,你基本上靠viewType,然后再决定什么样的viewholderlayoutinflate.这是一个例子:

private static final int TYPE_FIRST_ITEM = 0;
private static final int TYPE_ITEM = 1;

...

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
   if (viewType == TYPE_FIRST_ITEM) {
      // inflate your view holder for the first item
   } else {
      // here inflate your view holder for all the other items
   }

...

@Override
    public int getItemViewType(int position) {
        if (position == 0) {
            return TYPE_FIRST_ITEM;
        } else {
            return TYPE_ITEM;
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以基本上你有adapter1,2(或更多)viewHolder,这就是全部.如果你adapter应该有2种layout你使用2 viewHolder和布局,否则你使用更多,如果你还需要一个页脚layout.

  • 如果我使用它,它仍然会在 StaggeredGridLayoutManager 中,这意味着视图将交错。我希望它位于 LinearLayoutManager 之类的地方(一列)。 (2认同)