Android RecyclerView瀑布流位置变化和顶部留白问题

位置问题:

layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);

顶部留白的问题:

网上很多是在scroll的时候去让recyclerview重新绘制一下span

mRecyclerView.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();
           
        }
    }
   


你可能感兴趣的:(android,问题)