Android RecyclerView瀑布流位置变化StaggeredGridLayoutManager

解决位置问题设置:

layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);

解决顶部留白的问题:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {     
    @Override  
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {  
        super.onScrollStateChanged(recyclerView, newState);  
        //防止第一行到顶部有空白区域  
        layoutManager.invalidateSpanAssignments();  
      }
  });

当设置每个item之间的空隙的时候出了问题,在滑动的时候 spanindex的位置会错乱(因为invalidateSpanAssignments()重新去刷新了span)。
可以在滑动到顶部的时候刷新当前的adapter。

@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
    super.onScrolled(recyclerView, dx, dy);
    StaggeredGridLayoutManager layoutManager = (StaggeredGridLayoutManager) recyclerView.getLayoutManager();
    int[] firstVisibleItem = null;
    firstVisibleItem = layoutManager.findFirstVisibleItemPositions(firstVisibleItem);
    if (firstVisibleItem != null && firstVisibleItem[0] == 0) {
        if (mAdapter!=null) {
            mAdapter.notifyDataSetChanged();
        }
    }

参考链接:https://blog.csdn.net/qq477631406/article/details/71483848

你可能感兴趣的:(Android RecyclerView瀑布流位置变化StaggeredGridLayoutManager)