这是事情: 有人知道setHasFixedSize方法吗?有人说它允许优化,如果所有项目都是相同的大小,并在android.support.v7.widget的RecyclerView类中,它评论说:如果它可以提前知道的变化,可以执行几个优化 适配器内容无法更改RecyclerView本身的大小。如果您使用RecyclerView属于此类别,请将其设置为true。
这是什么意思?有人能告诉我使用它的背景或解释上面“这个类别”的含义吗? 非常感谢。
答案 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);