Recycleview實現複雜頁面三種以上佈局 瀑布流多布 scrollview嵌套recyclerView 顯示不全滑動衝突

最下面帶瀑布流

在瀑布流管理器裏面有LayoutParams.setFullSpan(true);方法,在 onCreateViewHolder(ViewGroup parent, int viewType) 總體思路就是,把下面的瀑布流部分作爲一種type,其他無需加載更多的佈局放在recycleview裏面使用此方法使這一行佔滿全屏,這是我到現在總結出來的最好實現方式。

思路圖如下:


 部分代碼如下:

@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

發佈了45 篇原創文章 · 獲贊 17 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章