我们什么时候使用recyclerView.setHasFixedSize?

mac*_*hou 28 android

事情是这样的:有人知道setHasFixedSize方法吗?有人说如果所有项目大小都相同,它允许进行优化,而在android.support.v7.widget的RecyclerView类中,它评论如下:如果事先可以知道适配器内容的变化,RecyclerView可以执行多次优化无法改变RecyclerView本身的大小.如果您使用RecyclerView属于此类别,请将此设置为true.

那是什么意思?有人能告诉我使用它的背景或解释上面"这个类别"的含义吗?非常感谢.

Sot*_*tti 27

RecyclerView有趣的是,它的大小(宽度和高度尺寸)取决于适配器内容,以避免昂贵的布局操作.如果RecyclerView事先知道其大小不依赖于适配器内容,那么每次添加或从适配器中删除项目时,它都会跳过检查其大小是否应该更改.这一点尤其重要,因为插入删除元素可能会经常发生.

如果RecyclerView的大小(RecyclerView本身)......

... 不依赖于适配器内容:

mRecyclerView.setHasFixedSize(true);
Run Code Online (Sandbox Code Playgroud)

... 取决于适配器内容:

mRecyclerView.setHasFixedSize(false);
Run Code Online (Sandbox Code Playgroud)

如果您检查RecyclerView类,您将更详细地看到它,因为截至目前,mHasFixedSize并未在该类的许多位置使用.

将其设置为true并不意味着RecyclerView大小是固定的,只是意味着它不会因适配器内容的变化而改变.例如,RecyclerView大小可能会因其父级的大小更改而更改.

  • 术语“大小”被重载为 3 个意思:框架的大小(即滚动视图)、布局大小(即可滚动区域)或项目的数量。明确地说,这个方法指的是第一个方法,通常是“match_parent”。 (7认同)