Android 设置GridLayoutManager的完整跨度

Android 设置GridLayoutManager的完整跨度,android,android-recyclerview,gridlayoutmanager,Android,Android Recyclerview,Gridlayoutmanager,我必须创建一个异构的RecyclerView。默认列数为2,但有些项目需要全宽。我在使用StaggedGridLayoutManager时使用它,如下所示: @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { int viewType = getItemViewType(position); FeedItems cu

我必须创建一个异构的
RecyclerView
。默认列数为2,但有些项目需要全宽。我在使用StaggedGridLayoutManager时使用它,如下所示:

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
        int viewType = getItemViewType(position);
        FeedItems currentItem = getItem(position);
        StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams();
        switch (viewType) {
            case ITEM_TYPE_HEADER:
                final HeaderItem headerItem = currentItem.getHeaderItem();
                layoutParams.setFullSpan(true);
        }
    }
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            switch(mAdapter.getItemViewType(position)){
                case 1:
                    return 1;
                case 2:
                    return 2;
                default:
                    return -1;
            }
        }
    });

mRecyclerView.setLayoutManager(mLayoutManager);
如何对GridLayoutManager执行相同的操作,在GridLayoutManager中,我可以轻松切换基于不同视图类型的跨度?

有一种方法。像这样使用它:

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
        int viewType = getItemViewType(position);
        FeedItems currentItem = getItem(position);
        StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams();
        switch (viewType) {
            case ITEM_TYPE_HEADER:
                final HeaderItem headerItem = currentItem.getHeaderItem();
                layoutParams.setFullSpan(true);
        }
    }
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
        @Override
        public int getSpanSize(int position) {
            switch(mAdapter.getItemViewType(position)){
                case 1:
                    return 1;
                case 2:
                    return 2;
                default:
                    return -1;
            }
        }
    });

mRecyclerView.setLayoutManager(mLayoutManager);

这必须在将适配器设置为recyclerView之前或之后完成?通常,应在设置
recyclerView.adapter
之前设置
LayoutManager