解决位置问题设置:
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
网友评论