Android API之RecycleView

2015-12-09  本文已影响3420人  二七头头

概览

<p>一种用于在有限的窗口显示大量数据集合的组件。</p>

术语
RecycleView中的位置

在RecycleView.Adatper和RecycleView.LayoutManager中,RecycleView引进了额外的抽象层次以监听不具计算中数据集合的批量变化。这为LayoutManager在追踪适配器变化计算动画时省下不少功夫。同时,这也可以为所有视图捆绑和避免不必要的捆绑中提高性能。

因此,在RecycleView中的相关方法中,有两种类型的位置。

这两种类型的位置是等同的,除非在分发adapter.notify*事件和更新布局时。
返回布局位置的方法使用最近一次布局运算后的位置,如getLayoutPosition()和findViewHolderForLayoutPosition(int)。这些位置包含了最近一次布局运算后的变化。你可以根据这些位置来与用户正在屏幕上看到的保持一致。比如,你有一个条目列表,当用户请求第5个条目时,你可以使用这些方法来匹配用户看到的。

另外一系列方法与AdapterPosition关联,比如getAdapterPosition()和findViewHolderForAdapterPosition(int)。当你想获得条目在更新后的适配器中的位置使用这些方法,即使这些位置变化还没反映到布局中。比如,你想访问适配器中条目的位置时,就应该使用getAdapterPosition()。注意,如果notifyDataSetChanged()已经被调用而且还没计算新布局,这些方法或许不能够计算适配器位置。所以,你要小心处理这些方法返回NO_POSITION和null的情况。

总之,当使用RecycleView.LayoutManager时使用布局位置。与此同时,使用RecycleView.Adapter时,使用适配器位置。

内部静态抽象类Adapter

该类是适配器的基类,为显示在RecycleView视图中的数据和RecycleView中的视图提供粘合。

内部静态抽象类ViewHolder

一个ViewHolder描述了一个条目视图和有关在RecycleView中的位置信息。

RecycleView.Adapter的实现应该继承ViewHolder并添加开销较大的方法findViewById(int).

ViewHolders之于Adapter,就像RecycleView.LayoutParams之于Recycle.LayoutManager.
以上翻译还差些火候和内涵,待以后对RecycleView的理解加深后修改。

上一篇 下一篇

猜你喜欢

热点阅读