RecyclerView 瀑布流錯亂

2021-09-24 16:13:10 字數 1114 閱讀 5027

記錄一下,瀑布流錯亂問題

主要是在item中並不會固定寬高,而是在載入後再去計算的,所以在復用子view時不斷的進行重新排版,導致最後展示時出現了偏差,也就是錯亂留白。

解決辦法也就是針對布局和留白去進行處理,總的來說這幾句話:在布局時先計算布局尺寸,在滾到頂部時處理留白,在載入資料時注意重新整理(重新整理會重置布局和儲存的尺寸)。

以下解決方法可重疊使用。

layoutmanager.setgapstrategy(staggeredgridlayoutmanager.gap_handling_none);

按照的寬高,在介面載入前,先設定imageview的布局

if (items.get(position).getheight() > 0) 

glide.with(context).load(items.get(position).getimg_url()).asbitmap()

.into(new ******target(target.size_original, target.size_original)

imageview.setimagebitmap(resource);}}

});

實際上解決錯亂與留白的問題 主要原因在於載入更多資料之後 使用的是notifydatasetchanged()該方法將重新整理一整個recycleview的資料;所以解決方案將 notifydatasetchanged()替換成 notifyitemrangeinserted(int positionstart, int itemcount)進行新增資料區域性重新整理。

第四種方法就是在滾動到頂部時,進行留白處理

//防止頂部空白

recyclerview.addonscrolllistener(new recyclerview.onscrolllistener()

} }});

還有一種方法說是重寫getitemviewtype,但我沒試過

@override

public int getitemviewtype(int position)

RecyclerView如何設定瀑布流

一直在想著怎麼描述這樣的布局,畢竟用的是瀑布流的布局管理器,但是呢效果基本就是個網格布局,只是每列之間是上下錯開的,還是覺得叫交錯式網格布局吧。先看個效果。效果看起來應該很好實現的。這裡僅僅是記錄下自己實現的思路,然後貼出一些重要的 基本思路就是運用staggeredgridlayoutmanage...

RecyclerView瀑布流的實現

recyclerview瀑布流的實現 其實跟普通recyclerview使用一致,我們一般有兩種方式改變以形成瀑布流高度不一的參差感 第一種方式 在繫結檢視資料時,獲取控制項高度 一般都以控制項為主 動態改變高度 override public void onbindviewholder nonnu...

基於RecyclerView的瀑布流實現

fragment的布局 xmlns tools android layout width match parent android layout height match parent tools context fragment.vodlistfragment android id id id r...