2015-03-03 77 views
14

这里的东西: 有人知道setHasFixedSize方法吗?有些人说,如果所有项目的大小相同,它允许进行优化,而在android.support.v7.widget的RecyclerView类中,它会对此进行评论:如果RecyclerView可以预先知道 适配器中的更改,则可以执行若干优化内容不能改变RecyclerView本身的大小。如果您对RecyclerView的使用属于此类别,请将其设置为true。我们何时使用recyclerView.setHasFixedSize?

这是什么意思?任何人都可以向我展示使用它的上下文或解释上面的“这个类别”的含义吗? 非常感谢。

+0

该文件解释它。如果RecyclerView能够事先知道适配器内容的变化不能改变RecyclerView本身的大小,那么它可以执行一些优化。如果您对RecyclerView的使用属于此类别,请将此设置为true。' – 2015-03-03 09:07:59

+0

对不起,我真的不明白以下词语:适配器内容中的“更改”无法更改RecyclerView本身的“大小”。如果您对RecyclerView的使用属于此类别,请将其设置为true。什么样的变化,它的大小?如果是这样,那么“大小”是什么意思? – machinezhou 2015-03-04 04:59:54

+0

根据适配器中的对象数量,您的recyclerview是否会改变witdh或height? – 2015-03-04 08:42:50

回答

9

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

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

... 不会对适配器内容取决于

mRecyclerView.setHasFixedSize(true); 

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

mRecyclerView.setHasFixedSize(false); 

如果您检查RecyclerView class,您会看到更多d因为截至目前为止mHasFixedSize未在该课程的许多地方使用。

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

5

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

此信息将用于优化本身。

这里是参考网址

http://antonioleiva.com/recyclerview/

例子:

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

如果数据来自服务器并且其大小通常是意料之外的,那么在这种情况下,我们最好不要将该方法设置为真,对吗? – machinezhou 2015-03-04 04:52:42

+0

所以这让我总结:如果有20个图标,我想把它们放入recyclerview,这是最好的“类别”设置该方法是true.please纠正我。 – machinezhou 2015-03-04 04:57:28

相关问题