转载:对嵌套RecyclerView的优化

作者: SupLuo | 来源:发表于2018-05-22 22:43 被阅读173次

    转载自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0914/8514.html

    RecyclerView 是一个更高级的 ListView ,它可以重用view避免额外创建太多的view从而带来流畅的滚动性能。RecyclerView通过叫做 View pool 的东西持有不再可见的 view ,让它可被回收。

    有时我们需要使用嵌套的RecyclerView来创建某些布局。比如在一个垂直的RecyclerView中嵌套水平的RecyclerView。

    image

    从图中可以看到一个带横向滚动列表的垂直滚动列表。这是通过在一个recyclerView中嵌套另一个recyclerView来实现的。

    当用户滚动横向列表的时候,inner RecyclerView可以流畅的滚动。但是当垂直滚动的时候, inner RecyclerView 中的每个view再次inflated了一遍,从而感觉很卡顿。这是因为每个嵌套的 RecyclerViews 都有各自的 view pool。

    我们可以为所有 inner RecyclerView 设置一个单一的 view pool ,从而解决这个问题。

    使用RecyclerView.setRecycledViewPool(RecycledViewPool) 方法可以帮助你设置一个自定义的 view pool,代码如下:

    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);
        
    }
    

    现在所有的 inner RecyclerView都是同一个 view pool了。这样就大大的减少了view的创建,提高了滚动性能

    其他问题:错误,位置保存 https://juejin.im/entry/59706c336fb9a06bb874b0e3

    相关文章

      网友评论

        本文标题:转载:对嵌套RecyclerView的优化

        本文链接:https://www.haomeiwen.com/subject/yufljftx.html