Recycleview实现复杂页面三种以上布局 瀑布流多布 scrollview嵌套recyclerView 显示不全滑动冲突

最下面带瀑布流

Recycleview实现复杂页面三种以上布局 瀑布流多布 scrollview嵌套recyclerView 显示不全滑动冲突

在瀑布流管理器里面有LayoutParams.setFullSpan(true);方法,在 onCreateViewHolder(ViewGroup parent, int viewType) 总体思路就是,把下面的瀑布流部分作为一种type,其他无需加载更多的布局放在recycleview里面使用此方法使这一行占满全屏,这是我到现在总结出来的最好实现方式。

思路图如下:

Recycleview实现复杂页面三种以上布局 瀑布流多布 scrollview嵌套recyclerView 显示不全滑动冲突

 部分代码如下:

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    if (viewType == TYPE_TOP) {
        //头部轮播图
        View viewtop = inflater.inflate(R.layout.adapter_slider, parent, false);
        StaggeredGridLayoutManager.LayoutParams params =
                (StaggeredGridLayoutManager.LayoutParams) viewtop.getLayoutParams();
        params.setFullSpan(true);//最为重要的一个方法,占满全屏,以下同理
        viewtop.setLayoutParams(params);
        return new TypeTopsliderHolder(viewtop);
    } else if (viewType == TYPE_HEADER) {
        View view2 = inflater.inflate(R.layout.item_homepagertypeheader_type, parent, false);
        StaggeredGridLayoutManager.LayoutParams params =
                (StaggeredGridLayoutManager.LayoutParams) view2.getLayoutParams();
        params.setFullSpan(true);
        view2.setLayoutParams(params);
        return new TypeheadHolder(view2);
    } else if (viewType == TYPE_CENTER) {
        //中间head下面的布局
        View view = inflater.inflate(R.layout.itam_homepageradapter_rv2, parent, false);
        StaggeredGridLayoutManager.LayoutParams params2 =
                (StaggeredGridLayoutManager.LayoutParams) view.getLayoutParams();
        params2.setFullSpan(true);
        view.setLayoutParams(params2);
        return new TypetypeHolder2(view);
    } else if (viewType == TYPE_CATEGORY) {
        //四个快速入口的holder
        //这里的TypetypeHolder和上面的TypetypeHolder2 其实可以写成一个holder,这里为了简单,避免引起复用带来的问题,分开了
        View view = inflater.inflate(R.layout.itam_homepageradapter_rv2, parent, false);
        StaggeredGridLayoutManager.LayoutParams params2 =
                (StaggeredGridLayoutManager.LayoutParams) view.getLayoutParams();
        params2.setFullSpan(true);
        view.setLayoutParams(params2);
        return new TypetypeHolder(view);

    } else if (viewType == TYPE_REFRESH) {
        return new TypeRefresh(inflater.inflate(R.layout.item_raiders2, parent, false));
    } else {
        View viewtop = inflater.inflate(R.layout.adapter_slider, parent, false);
        StaggeredGridLayoutManager.LayoutParams params =
                (StaggeredGridLayoutManager.LayoutParams) viewtop.getLayoutParams();
        params.setFullSpan(true);
        viewtop.setLayoutParams(params);
        return new TypeTopsliderHolder(viewtop);
    }
}

Demo下载地址:https://download.csdn.net/download/qq_39735504/10278124

使用的OKGO的封装网络框架,如果使用Retrofit网络请求:http://blog.csdn.net/qq_39735504/article/details/79424286