RecyclerView(在后期学习过程中会持续更新)

目录

RecyclerView的基本概念

RecyclerView与ListView相比

RecyclerView组件

LayoutManager

RecyclerView.Adapter

ItemAnimator


RecyclerView的基本概念

RecyclerView是一个新的viewGroup,它可以说是ListView的进阶版。它不仅仅局限于ListView垂直布局能力,还具有可扩展性。

 

RecyclerView API最重要的类
用法
适配器 包装数据集并为项目创建视图
ViewHolder 保存所有依赖于当前项目的子视图
布局管理 在可用区域内放置物品
ItemDecoration 在项目的视图周围或顶部绘制装饰
ItemAnimator 添加、删除或者重新排序时动画项目

如果要使用RecyclerView,则必需以下内容:

  • RecyclerView.Adapter——处理数据集并将其绑定到视图
  • LayoutManager——设置项目的布局方式
  • ItemAnimator——帮助动画项目进行常规操作,例如简单的添加或者删除项目

RecyclerView与ListView相比

  • 适配器中必需的ViewHolder——ListView适配器不需要使用ViewHolder模式来提高性能,与此相反,RecyclerView需要使用它的ViewHolder模式RecyclerView.ViewHolder。
  • 可自定义项目布局——ListView只能垂直排列项目,不能自定义;与此相反,RecyclerView通过RecyclerView.LayoutManager允许任何项目布局,包括水平列表或者交错网格状。
  • 项目动画——ListView不包含特殊规定,相比之下,RecyclerView具有RecyclerView.ItemAnimator处理动画的类。
  • 手动数据源——ListView针对不同来源选取不同的适配器,例如ArrayAdapter、CursorAdapter;与此相反,RecyclerView.Adapter通过自定义实现来向适配器提供数据。
  • 手动项目装饰——举例:ListView具有android:divider在项目之间分隔的属性等;与此相反的是,RecyclerView则需要使用RecyclerView.ItemDecoration来自定义设置分隔符装饰。
  • 手动手势检测——ListView具有AdapterView.OnItemClickListener绑定项目的单击事件的界面;相比,RecyclerView只有支持RecyclerView.OnItemTouchListener管理触摸事件但是没有内置的点击处理。

RecyclerView组件

LayoutManager

RecyclerView提供以下内置布局管理器:

  • LinearLayoutManager:显示垂直或水平滚动列表中的项目
  • GridLayoutManager:显示网格中的项目
  • StaggeredGridLayoutManager:以交错网格显示项目

其中,LayoutManager默认实现为LinearLayoutManager,你可以通过此类来创建垂直或水平列表。

LinearLayoutManager layoutManager = new LinearLayoutManager(context);
layoutManager.setOrientation(LinearLayoutManager.HORIENTATION);
layoutManager.scrollToPosition(position);
recyclerView.setLayoutManager(layoutManager);

RecyclerView.Adapter

它必须履行两个角色:提供对数据集的访问;负责为项目创建正确的布局。不同于ListView、AutoCompleteTextView、Spinner使用适配器,它们都继承自AdapterView。RecyclerView采用了新的基类RecyclerView.Adapter来替换旧的。

查看源码,我们会发现RecyclerView.Adapter是抽象的,因此你必须实现以下三种方法:

  • public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
  • public void onBindViewHolder(ViewHolder holder,int position)
  • public int getItemCount()

ItemAnimator

ItemAnimator处理三个事件:

  • 项目将添加到数据集中
  • 项目将从数据集中删除
  • 作为前两个操作中的一个或多个操作的结果,项目移动

如果未设置自定义ItemAnimator,则RecyclerView使用实例DefaultItemAnimator。

要使动画效果实现的话,我们必须要能够了解到数据集的更改,早期的方法已经摒弃,现在要查看动画,使用更具体的方法。

 

发布了50 篇原创文章 · 获赞 37 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/m0_37868230/article/details/86564062