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

时间:2015-03-03 08:55:43

标签: android

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

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

2 个答案:

答案 0 :(得分:27)

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

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

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

mRecyclerView.setHasFixedSize(true);
适配器内容

... 取决于

mRecyclerView.setHasFixedSize(false);

如果您查看RecyclerView class,我会更详细地看到它,因为截至目前为止, mHasFixedSize 并未在该类的许多地方使用。< / p>

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

答案 1 :(得分:3)

setHasFixedSize()用于让 RecyclerView保持相同的大小

此信息将用于优化本身。

这是参考网址

http://antonioleiva.com/recyclerview/

示例:

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list);
recyclerView.setHasFixedSize(true);