【问题标题】:When to use RecyclerView setHasFixedSize(true)?什么时候使用 RecyclerView setHasFixedSize(true)?
【发布时间】:2016-02-01 05:59:31
【问题描述】:

我已经阅读了 Android 开发者信息以及一些 SO 帖子和 RecyclerView 文章。我仍然不清楚我是否可以使用:

recyclerView.setHasFixedSize(true);

我的 RecyclerView 列表中的方法。我的 RecyclerView 列表的大小会随着时间的推移动态添加和删除 CardView 项目而不断变化。但是,每个 CardViews 的大小(高度和长度)是固定的。请指教。

【问题讨论】:

标签: android android-recyclerview android-cardview


【解决方案1】:

是的,你可以使用

recyclerView.setHasFixedSize(true); 

只要recyclerview的高度和宽度保持不变。

来自 Android 开发者:

public void setHasFixedSize (boolean hasFixedSize)

RecyclerView 可以执行多种优化,如果它可以知道 预先说明适配器内容的变化不能改变 RecyclerView 本身。如果你对 RecyclerView 的使用属于这个 类别,将此设置为 true。参数 hasFixedSize 如果适配器为真 更改不会影响 RecyclerView 的大小。

【讨论】:

  • 我已在布局文件中将 RecyclerView 的 layout_width 和 layout_height 分别设置为 match_parent...所以不确定相对于您的答案意味着什么。
  • 这意味着你可以使用它,没有问题
  • 是的,我做到了,这就是我从中了解到的——这只是为了对 recylerview 进行内部优化。如果你知道你的列表不会改变,那么你可以 setHasFixedSize 为 true。例如,您正在显示一个带有静态类别列表的对话框。在这里,您在本地获取列表,因此知道列表大小不会改变,用户只能执行选择它们的操作。
  • 他是动态添加和删除项目而不改变recyclerView的大小
  • 我认为这与数据集有关
【解决方案2】:

如果您事先知道 RecyclerView 的大小将在您为其设置适配器后保持不变,则它是可选的。然后在初始化 RecyclerView 对象后使用这行代码,否则不需要使用它。

【讨论】:

  • 是的,但我不清楚您指的是什么大小...我正在创建的 RecyclerView 列表会随着时间的推移而增长,因为添加了更多的 CardView 或者它是 CardView 本身的布局这是固定的。
  • 它是关于内容而不是布局。所以你不需要使用它。
猜你喜欢
  • 2019-10-18
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多