Android 进阶技术篇专题功能开发android UI

转载:对嵌套RecyclerView的优化

2018-05-22  本文已影响173人  SupLuo

转载自: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

上一篇下一篇

猜你喜欢

热点阅读