开发需要,接触recyclerview 瀑布流方式(StaggeredGridLayoutManager)。使用过程中遇到的问题,记录下,供以后参考。
1,从下向上滑动时会出现左右两列位置互换的问题
网上解决方法:1.设置这个属性 staggeredGridLayoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE)
2,这样会出现顶部留白问题 需要重写
public voidonScrollStateChanged(RecyclerView recyclerView, intnewState) {
super.onScrollStateChanged(recyclerView,newState);
//防止第一行到顶部有空白区域
((StaggeredGridLayoutManager)mRefreshMoreRecyclerView.getLayoutManager()).invalidateSpanAssignments();
}
但是发现用这2种方法,只是让item上数据没变动,其实item还是有互换。如果item左右间距(SpacesItemDecoration)设置不同,从下向上滑动时,会有刷新,很明显看到,左右2列item间距会发生变化。
最后 在adapter中刷新数据的时候使用 adapter.notifyItemRangeChanged()这个方法,解决上面的问题