RecyclerView项目在刷新后更改大小

时间:2016-05-31 13:17:04

标签: java android android-recyclerview recyclerview-layout

我有RecyclerView,如下图所示:

RecyclerView

这是此RecyclerView的设置代码:

RecyclerView.LayoutManager layoutManager = new GridLayoutManager(this, 2);
dataRecyclerView.setLayoutManager(layoutManager);
dataRecyclerView.addItemDecoration(new GridSpacingItemDecoration(...);
dataRecyclerView.setItemAnimator(new DefaultItemAnimator());

在开始我更新RecyclerView的选定项目的新活动后,RecyclerView会重新填充新数据以反映新的更改,但我得到以下结果:

Result 1

当我向下滚动时,我得到了这个空白:

Result 2

我尝试在刷新后调用RecyclerView#invalidate()#invalidateItemDecorations()#requestLayout(),但无济于事; &安培;我也没有在setHasFixedSize(true)上致电RecyclerView

究竟是什么问题?我如何调整子项目的大小,以便在刷新后精确地包装其内容?

(P.S:我尝试刷新而没有做任何改动,也没有发生任何事情,这证明了我的理论,即只有在儿童用品的高度发生变化时才会出现问题。)

1 个答案:

答案 0 :(得分:1)

那已经很晚了,但我也遇到过这个问题。这可能对那些仍然有相同错误的人有所帮助。

在我的情况下,解决方案是检查Recyclerview是否有任何项目装饰:

recyclerView.addItemDecoration(new SpacesItemDecoration(8));

每次更新recyclerview时都会调用此行,并使recyclerview项目变小。希望它对另一方有所帮助。

快乐编码, 巴基