我有RecyclerView
,如下图所示:
这是此RecyclerView
的设置代码:
RecyclerView.LayoutManager layoutManager = new GridLayoutManager(this, 2);
dataRecyclerView.setLayoutManager(layoutManager);
dataRecyclerView.addItemDecoration(new GridSpacingItemDecoration(...);
dataRecyclerView.setItemAnimator(new DefaultItemAnimator());
在开始我更新RecyclerView的选定项目的新活动后,RecyclerView会重新填充新数据以反映新的更改,但我得到以下结果:
当我向下滚动时,我得到了这个空白:
我尝试在刷新后调用RecyclerView#invalidate()
,#invalidateItemDecorations()
,#requestLayout()
,但无济于事; &安培;我也没有在setHasFixedSize(true)
上致电RecyclerView
。
究竟是什么问题?我如何调整子项目的大小,以便在刷新后精确地包装其内容?
(P.S:我尝试刷新而没有做任何改动,也没有发生任何事情,这证明了我的理论,即只有在儿童用品的高度发生变化时才会出现问题。)
答案 0 :(得分:1)
那已经很晚了,但我也遇到过这个问题。这可能对那些仍然有相同错误的人有所帮助。
在我的情况下,解决方案是检查Recyclerview是否有任何项目装饰:
recyclerView.addItemDecoration(new SpacesItemDecoration(8));
每次更新recyclerview时都会调用此行,并使recyclerview项目变小。希望它对另一方有所帮助。
快乐编码, 巴基