使用RecyclerView搭配StaggeredGridLayoutManager实现瀑布流时,一般会在Adapter的onBindViewHolder()方法里给每一个item随机生成一个高度,使得item的排布错落有致,不死板。但是当我们下拉到底部之后,上拉的时候,每一个item又会执行一遍onBindViewHolder()方法,这时如果还是简单随机给一个高度,由于每个item的高度都与之前的高度不一致,会导致我们滑回到顶部的时候,瀑布流的几个流可能不是平齐的,StaggeredGridLayoutManager会调整排布顺序,使得几个流的顶部平齐,产生了跳跃的现象。
解决办法,在Adapter中维护一个记录每个item高度的itemHeightList,第一次填充时随机生成高度,在第二次填充的时候,直接去itemHeightList中取得对应位置的item高度,这样,回到顶部时,几个流就是正好平齐的了。
但是当我们的瀑布流RecycrView中有拉到底部加载更多的逻辑的时候,每次加载了新的数据,又会产生跳跃问题。
解决办法,给Stagge