(4)RecyclerVIew

有关内容

  • Adapter
  • LayoutManager
  • itemDecoration
  • ItemAnimatorr
  • ItemTouchHelper

    了解RecyclerView

  • RecyclerView封装了viewholder的回收复用,编写Adapter面向的是ViewHolder而不再是View
  • 提供了一种插拔式的体验,高度的解耦,异常的灵活,针对每一个Item的显示,RecyclerView专门抽取了相应的类,使其扩展性非常强。
  • 设置布局管理器以控制Item的布局方式,横向、竖向以及瀑布流方式。
  • 可设置Item的间隔样式(可绘制)。
  • 可以控制Item增删的动画。

    RecyclerView控件是Android 5.0,谷歌公司推出的,是support-v7包中的新组件,所以当我们要使用该控件时,首先需要在项目的build.gradle中添加相应的依赖库

RecyclerView控件是Android 5.0,谷歌公司推出的,是support-v7包中的新组件,所以当我们要使用该控件时,首先需要在项目的build.gradle中添加相应的依赖库

RecyclerView的相关类

  • RecyclerView.Adapter:可以托管数据集合,为每一项Item创建视图并且绑定数据
  • RecyclerView.ViewHolder:承载Item视图的子布局
  • RecyclerView.LayoutManager:负责Item视图的布局的显示管理
  • RecyclerView.ItemDecoration:画分割线
  • RecyclerView.ItemAnimator:负责处理数据添加或者删除时候的动画效果

RecyclerView的基本使用步骤

  • 获取RecyclerView控件
RecyclerView  recyclerView  = ( RecyclerView) findViewById(R.id.xxx)
  • 给获取的RecyclerView设置布局管理器
  • 创建并设置自定义适配器
  • 将RecyclerView与自定义的适配器的对象绑定

Adapter

  • 创建View和ViewHolder,后者作为整个复用机制的跟踪单元。
  • 把具体位置的Item和ViewHolder进行绑定,并存储相关的信息。
  • 通知RecyclerView数据变化,支持局部的更新,在提高效率的同同时也有效的支持动画。
  • Item点击事件的处理。
  • 多类型布局的支持。

自定义适配器

  • 继承于RecyclerView.Adapter
  • 构造函数

    初始我们想要展示的数据

  • 创建内部类ViewHolder(View view)继承于RecyclerView.Adapter
    这个内部类用来获取RecyclerView中每个Item的布局以及和它相关联的数据,同时也是RecyclerView.Adapter中需要指定的VH类型
  • 实现抽象方法
    • onCreateViewHolder(ViewGroup parent, int viewType)

      当RecyclerView需要我们提供类型为viewType的新ViewHolder时,会回调这个方法。
      在这里,我们实例化出了Item的根布局,并返回一个和它绑定的ViewHolder。

    • onBindViewHolder(VH viewHolder, int position)

      当RecyclerView需要展示对应position位置的数据时会回调这个方法。
      通过viewHolder中持有的对应position上的View,我们可以更新视图。

    • getItemCount()

      返回Item的总数。

LayoutMannager

  • Position:负责view的摆放,线性、宫格、瀑布流式或者任意类型
  • Scroll:处理滚动事件,RecyclerView负责接收事件,最终由LayoutManage处理滚动后的逻辑,因为只有它知道View的具体摆放位置。

三种布局管理器

  • 线性布局,横向或者纵向滑动列表
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
     recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
  • 表格布局
GridLayoutManager layoutManager=new GridLayoutManager(this,4);
  • 瀑流式布局
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);

RecyclerView的点击事件

先获取点击的数据元素的postion,再通过position获取被点击的Fruit的实例,然后通过toast显示被点击的实例的内容。

自定义REcyclerView的Item间分割线

  • 通过方法引入addItemDecoration方法就可以画出默认分割线
  • 如果要画出自定义分割线,就要在drawable下新建一个xml文件,然后在values文件下styles.xml文件中用之前新建的xml文件替换RecyclerView自带的listDivider
  • 自定义ItemDecoration.

数据更新

  • 数据更新分为两种
      • 除了Item所对应的数据被更新外,没有其他变化使用, notifyXXXChanged()。
      • 位置变化:Item在数据集中被插入、删除或者移动,使用notifyXXXInsert/Removed/Moved()方法。
  • 局部的刷新
notifyItemChanged(int postion) //position的数据变化 一条数据 
notifyItemInserted(int position) //在position的下方插入了一条数据
notifyItemRemoved(int postion) //移除了position的数据 
notifyItemRangeChanged(int postion, int n) //从position开始,往下n条数据发生了改变 notifyItemRangeInserted(int position, int n) //从position开始,插入了n条数据 notifyItemRangeRemoved(int postion, int n) //从position开始,移除了n条数据
  • 整体刷新

    notifyDataSetChanged()会吧当前所有的Item和结构都视为已经失效的,因此它会让LayoutManager重新绑定Item,并对它们重新布局。

ItemAnimator动画

  • RecyclerView提供了默认的ItemAnimator实现类:DefaultitemAnimator如果没有特殊的需求,默认使用这个动画即可。
mRecyclerView.setItemAnimator(new DefaultitemAnimator());
  • RecyclerView的Item增添删除
    • 在Adapter里面添加方法实现相应逻辑:list数组的add/remove方法的调用;
      界面的刷新
addItem(int position)   //在position下面增添一个Item
     removeItem(int position)//删除position的Item
  • 相应的点击事件

转载于:https://www.cnblogs.com/lyszyl/p/10654578.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值