何时使用RecyclerView的setHasFixedSize(true)?

5

我已经阅读了Android开发者的信息以及许多Stack Overflow文章和RecyclerView文章。但我仍然不清楚我是否可以使用:

recyclerView.setHasFixedSize(true);

我需要在我的RecyclerView列表上运用一个方法。由于CardView项目会随着时间动态添加和删除,因此我的RecyclerView列表的大小将不断变化。但是,每个CardView的大小(高度和长度)是固定的。请给予建议。


https://dev59.com/9V4b5IYBdhLWcg3wqDSj#40707099 - Sotti
可能是 Understanding RecyclerView setHasFixedSize 的重复问题。 - Manohar
2个回答

3
是的,您可以使用。
recyclerView.setHasFixedSize(true); 

只要RecyclerView的高度和宽度保持不变。
来自Android开发者文档:
public void setHasFixedSize (boolean hasFixedSize)

如果RecyclerView可以事先知道适配器内容的更改不会影响RecyclerView本身的大小,则可以执行几种优化。如果您使用RecyclerView属于此类别,请将其设置为true。参数hasFixedSize为true,表示适配器更改不会影响RecyclerView的大小。


是的,我已经这样做了,以下是我从中理解到的内容:这仅用于RecyclerView的内部优化。如果您知道您的列表不会发生变化,那么可以将setHasFixedSize设置为true。例如,您正在显示一个具有静态类别列表的对话框。在这种情况下,您正在本地获取列表,因此知道列表的大小不会改变,用户只能选择它们。 - krishan
他正在动态添加和删除项目,而不改变recyclerView的大小。 - JAAD
我认为这与数据集有关。 - krishan
RecyclerView的大小指的是它所持有的数据集的大小,而不是它的layout_height和layout_width。 - krishan
如果您将高度设置为match_parent,它将占用整个设备高度。添加项目会使RecyclerView可滚动,但不会更改RecyclerView的高度。 - JAAD
显示剩余5条评论

0

如果您事先知道一旦为RecyclerView设置了适配器,其大小将保持不变,则可以选择使用此行代码,在初始化RecyclerView对象后使用它。否则,无需使用它。


1
是的,但我不清楚您指的是哪个尺寸...我正在创建的RecyclerView列表将随着添加更多的CardViews而增长,还是CardView本身的布局是固定的。 - AJW
请翻译以下有关编程的内容:仅返回翻译后的文本,无需考虑排版。 - Nauman Ali Shah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接