recyclerview 瀑布流使用

开发需要,接触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()这个方法,解决上面的问题

你可能感兴趣的:(recyclerview 瀑布流使用)