优化嵌套的RecyclerView

优化嵌套的RecyclerView

RecyclerView是ListView的更高级版本,它重用相同的视图以防止额外创建视图以提供平滑的滚动体验。RecyclerView通过保持视图池来实现这一点,该视图池包含不再可见并且可以回收的视图。

有时我们需要嵌套RecyclerView来创建一些布局。考虑在垂直方向RecyclerView内部有水平RecyclerView的情况。

在上图可以看到一个可以水平滚动的垂直RecyclerView,这是通过在另一个recyclerView中放置recyclerView来实现的。

当用户向侧面滑动时,内部RecyclerView可以回收视图并为您提供平滑滚动。但是,当用户垂直滚动时,情况并非如此。内部RecyclerView的每个视图都会再次inflate,这是因为每个嵌套的RecyclerView都有一个自己的视图池。

我们可以通过为所有内部RecyclerView设置单个视图池来解决此问题。

允许你可以给RecyclerVIew设置自定义的视图池,代码看起来像这样:

public OuterRecyclerViewAdapter(List<Item> items) {
    //Constructor stuff
    viewPool = new RecyclerView.RecycledViewPool();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //Create viewHolder etc
    holder.innerRecyclerView.setRecycledViewPool(viewPool);

}

所以,现在所有的内部RecyclerView都有相同的视图池,它可以使用彼此的视图。这使得视图创建更少,滚动性能更好。

原文链接

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值