如何使用RecyclerView

本文详细介绍了Android的RecyclerView组件,作为ListView和GridView的替代品,提供了更强大的性能和自定义能力。文中涵盖RecyclerView的基本组成,如Adapter、LayoutManager和ItemAnimator,并通过多个步骤指导如何配置和使用RecyclerView,包括安装、数据绑定、自定义布局、动画效果和监听触摸事件。此外,还讨论了RecyclerView的性能优化、布局管理器、装饰器和无限滚动等高级特性。
摘要由CSDN通过智能技术生成

1. Overview

 

    这是一篇翻译文章,自己作为android工程师以来,第一次翻译国外网站的文章,所以不免会有一些遗漏和错误。

    原文请参考

    RecyclerView 是一种新的ViewGroup,它的存在是为了像其他的viewGroup一样提供以adapter 为基础的view。它将成为ListViewGridView的继承者(这也是我翻译这篇文章的原因)。这个类是由support-v7提供的支持;之所以这么说的原因有:recyclerView 拥有更加可以拓展的framework,尤其是在它支持了实现水平和垂直的layout。当你的数据集会根据用户的action或者网络事件而进行change的时候要使用RecyclerView

如果你想要使用RecyclerView,你需要进行下面的工作:

  1. . RecyclerView.Adapter-用于处理数据集和绑定它到一个view
  2. .LayoutManager- 用于定位items
  3. .ItemAnimator- 为通用的操作(如:增加和移除item)进行动画处理

另外,它为listView添加和删除添加的动画效果和现在目前的实现是完全不同的。RecyclerView也在开始加强ViewHolderPattern

这个动作目前是一个值得推荐的经验,而且现在已经深深的在新的framework中集成了。

更多的细节请看这个link

1.1 与ListView 对比

RecyclerView 不同于它的父本ListView是因为一下的功能:

  • . Required VIewHolder in Adapters- ListView adapters不要求使用ViewHolder模式去增加性能(一般开发者会用到viewHolder),相反,RecylcerView是被要求使用ViewHolder的。
  • .Customizable Item Layouts ListView 能够且只能够布局垂直Linear而且这个不能由用户定制。相反,RecyclerView因为拥有RecylerView.LayoutManger所以可以允许所有的itemlayouts包括水平liststaggeredgrids
  • . easy item animations listView 并不包含特别提供的产品来提供对于item增减时可以产生动画的内容。相反,RecyclerView拥有RecyclerView.ItemAnimator类来处理itemanimations
  • .Manual Data Source Listview拥有类似与ArrayAdapterCursorAdapter等不同的Adapters用于处理arrays database结果集。相反,RecyclerView.Adapter要求用户实现来支持数据adapter
  • .Manual Item Decoration ListView 拥有androiddivider属性来快速的间隔list中的各item。相对的,RecyclerView要求使用RecyclerViewItemDecoration对象来实现更多的手动的divider修饰。
  • . Manual Click Detection Listview 拥有一个AdapterView.OnItemClickListener接口来绑定按键事件。相应的,REcyclerVIew只支持RecyclerView.OnItemTouchListener,它将管理分散的touch事件,但是RecyclerView却没有创建好了的clickhanding

2. RecyclerView 的组成

2.1 LayoutManagers

一个RecyclerView需要拥有一个layout Manager 和一个Adapter来进行实例化。一个layoutmanager 将itemviews插入到RecyclerView同时决定什么时候重用那些相当用户不在可见的itemviews。
RecyclerView 提供下面这些build-inlayout managers:
  •   LinearLayoutManager 显示在垂直和水平滚动的items
  •   GridLayoutManger 显示在grid中的items
  •   StaggerdGridLayoutManager 显示在staggered grid 中的items
在创建一个用户的layout manager,extend RecyclerView.LyaoutManager类.
这个link 里面是 Dave Smith’s talk 关于custom layout manager
 

2.2 RecyclerVIew.Adapter

RecyclerView 包含一个新品质的adapter。它类似于一个你已经使用过的adpter,但又具备了一些特殊的特征,例如,要求ViewHolder.你将必须override两个主要的方法:一个是inflate这个view和它的viewholder,另一个是bind 数据给这个view. 好消息是第一个方法只是在我们真的需要创建一个新view的时候。不需要检查它是否被回收了。

 

2.3 ItemAnimator

RecyclerView.ItemAnimator将使ViewGroup给adapter提醒的修改(如:增删选择)产生动画效果。DefaultItemAnimator将被用来作为基本的默认动画,而且有非常好的作用效果。可以看这个后面相关的section来获取更多的信息
 

3. Using the RecyclerView

使用一个RecyclerView 有以下几个关键的步骤:

1.            增加RecyclerView支持库到gradle build file

2.            定义一个modelclass 作为datasource

3.            添加一个RecyclerView给你的activity来显示这个items

4.            创建一个customrow layout XML 文件来可视化一个item

5.            创建一个RecyclerView.AdapterViewHolder 来提供给item

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值