RecyclerView设计思想初体验
昨天看了Google I/O 16中关于RecyclerView的视频「RecyclerView Ins and Outs」,里面谈到了RecyclerView的一些设计思想。简单地说一下感受。 RecyclerView的设计初衷是为了更好地自定义列表显示。在RecyclerView的实际使用中,整体感受是职责做了更好的分离,使用起来自定义程度更高。 ListView与RecyclerView的对比 1、ListView列表显示提供的很多功能,本身可能并不需要。如Header、Divider等。RecyclerView中,把这些可选的功能划分到下属的组件中,用户可选进行实现,更灵活。 如item的点击事件 ListView的点击事件监听是对整个item进行点击监听。监听事件的设置是在ListView中通过setOnItemClick()进行设置的。 而现实情况中,每个item的需要点击的视图可能不单单只有整体的item,item的其他元素,如点赞按钮等,都需要实现局部点击。因此,ListView不能满足需求。 RecyclerView中,默认不提供点击事件的监听。如果开发者需要对RecyclerView中的item需要点击的View进行监听,需要在Adapter或者ViewHolder中自行监听相应View的点击事件。这样设置点击事件更灵活,自由度更高。 再如分割线的实现 ListView中,分割线可通过ListView.addHeader() / addFooter()方法添加分割线。但是这种方法的局限是只能传入View对象。 而在RecyclerView中,分割线等功能可以通过RecyclerView.ItemDecoration类实现。对视图的定制更灵活,可实现StickyHeader(分类悬浮Header)等酷炫功能。 2、职责分离,功能解耦 如RecyclerView与LayoutManager的职责分离。 在ListView时代,只能实现垂直列表。而若需要使用其他形式显示,只能替换其他View来实现。而在RecyclerView中,显示形式(垂直显示、网格显示)通过LayoutManager控制,与RecyclerView解耦。RecyclerView只需要通过setLayoutManager()方法,传入不同的Layou...