首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【RecyclerView】 六、RecyclerView.ItemDecoration 条目装饰 ( 简介 | onDraw | onDrawOver | getItemOffsets )

, 调用 RecyclerView.getChildAdapterPosition(View) , 方法获取适配器中的该 View 组件位置 ; 然后将特殊位置可以设置不同的参数 , 即可实现 " 针对特殊位置的特殊设置...不生效 , * 应该设置 outRect 所有的 4 个字段值为 0 ; * * * 如果需要取访问 Adapter 适配器中的关联数据..., 调用 RecyclerView.getChildAdapterPosition(View) * 方法获取适配器中的该 View 组件位置 ; *...不生效 , * 应该设置 outRect 所有的 4 个字段值为 0 ; * * * 如果需要取访问 Adapter 适配器中的关联数据..., 调用 RecyclerView.getChildAdapterPosition(View) * 方法获取适配器中的该 View 组件位置 ; *

60800

【RecyclerView】 十三、RecyclerView 数据更新 ( 移动数据 | 数据改变 )

文章目录 一、移动数据 二、数据改变 三、完整代码示例 四、RecyclerView 相关资料 一、移动数据 ---- 移动数据 : 调用 RecyclerView.Adapter 的 void notifyItemMoved..., 数据集发生了改变 ; 调用该方法刷新数据 , 比调用其它方法更有效 , 但是没有动画效果 ; 数据改变事件类型 : 有两种不同的类型 , item 元素改变 和 结构性改变 ; ① item 元素改变...item 条目和结构 , 这些数据可能已经失效 ; 布局管理器 LayoutManager 会强制所有数据重新绑定 , 并重新读取所有可视组件的布局 ; 如果适配器调用了本方法 , 通知数据发生了改变...; * * 如果适配器调用了本方法 , 通知数据发生了改变 , RecyclerView 会尝试去 为适配器 同步可见的结构性改变事件 ;...* 这样有助于动画和可视化对象的持续 , 但是单独的 item 元素组件需要重新被绑定 ; * * 如果你正在写一个适配器 , 使用该方法 , 比使用多个指定的变化方法

3.4K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    recyclerView源码解析

    2、recyclerkView源码解析首先看recyclerView的注释图片adapter:正如前文所诉,RecyclerView.Adapter 负责提供表示数据集中项目的视图。...可以在不完全脱离父 RecyclerView 的情况下重用 Scrap 视图,如果不需要重新绑定则不修改,或者如果视图被认为是脏的则由适配器修改。...在step2执行完后就可以调用setMeasuredDimensionFromChildren方法,根据子类的测量布局结果来设置自身的大小2.2recyclerView的onlayoutprotected...数据重置,需要重新绑定数据detach操作,是一种轻量级的分离,只会把这个View在ViewGroup的children数组中的引用设为null,并设置他的parent为null。...在进行布局时回收,子View进行detach,如果布局完成后,还在显示区域内显示,那么就会重新attach。其他不显示的就会被remove。

    77200

    【RecyclerView】 十一、RecyclerView 数据更新 ( 删除单条数据 | 批量删除数据 )

    文章目录 一、删除单条数据 二、批量删除数据 三、完整代码示例 四、RecyclerView 相关资料 一、删除单条数据 ---- 删除单条数据 : 调用 RecyclerView.Adapter 的...item 元素索引 , 也就是说之前的数据集合中被移出的数据索引 ; 注意 : 调用该方法后 , 只会刷新与该位置相关的 item 元素 , 不会刷新其它元素 , 即使数据改变了 , 也不会刷新 ;...---- 批量删除数据 : 调用 RecyclerView.Adapter 的 void notifyItemRangeInserted(int positionStart, int itemCount...; ( 旧的数据集中的索引位置 ) int itemCount 参数 : 数据集中被删除元素个数 ; 注意 : 调用该方法后 , 只会刷新与该位置相关的 item 元素 , 不会刷新其它元素 , 即使数据改变了...中的其它 item 元素不变 ; 代码示例 : 删除前 3 个数据 , 通知适配器 , 原数据集中的从第 0 个元素开始的 3 个数据元素被删除了 ; //

    3.6K00

    【RecyclerView】 十二、RecyclerView 数据更新 ( 修改单条数据 | 批量修改数据 )

    文章目录 一、修改单条数据 二、批量修改数据 三、完整代码示例 四、RecyclerView 相关资料 一、修改单条数据 ---- 修改单条数据 : 调用 RecyclerView.Adapter 的...; 该方法等价于 notifyItemChanged(position, null) ; int position 参数 : 发生改变的 item 元素位置 ; 注意 : 调用该方法后 , 只会刷新与该位置相关的...---- 批量修改数据 : 调用 RecyclerView.Adapter 的 void notifyItemRangeRemoved(int positionStart, int itemCount..., 只是绑定的数据发生改变 ; 代码示例 : 修改前 3 个数据 , 通知适配器 ; // 替换第 0, 1, 2 个元素 names.set...适配器 */ public class Adapter extends RecyclerView.Adapter { @Override

    4.1K00

    SwipeRefreshLayout下拉刷新组件

    setRefreshing(boolean refreshing):设置刷新状态,true表示正在刷新,false表示取消刷新。...这里使用到了一个Handler对象模拟耗时操作,操作完毕后再更新文本框里面的内容。关于Handler的使用方法后续会详细学习,这里先暂时借用一下。...在RecyclerView数据动态更新案例的基础上来修改,首先修改布局文件,在RecyclerView的外层LinearLayout替换为SwipeRefreshLayout,修改后的recyclerview_layout.xml...item布局和适配器代码不变,便于集中学习这里贴出适配器RecyclerViewAdapter的关键代码,如下所示: package com.jinyu.cqkxzsxy.android.advancedviewsample.adapter...显示的管理器和适配器,然后再设置SwipeRefreshLayout。

    3.3K70

    RecycleView从0到0.1 | 技术创作特训营第一期

    一、文章快速总结RecycleView是安卓的列表,可以灵活控制每一项的数据,布局,动画。Adaper是整体适配器,逻辑放在这里。Holder是每一项的内容,把控件初始化放在这里。...二、RecycleView是什么  RecycleView是Android5.0后谷歌推出的一个用于在有限的窗口中展示大量数据集的控件,位于support-v7包中。..."); } }}Adapter  使用时需要创建adapter(适配器)类,该类继承于RecyclerView.Adapter,其中VH是我们adapter类中创建的一个继承于...onDrawOver(Canvas c, RecyclerView parent, State state): 在Item绘制之后被调用(慢于drawChildren),主要用于绘制分割线样式。...List mList;//数据源 private OnItemClickListener onItemClickListener; /** * 供外部调用设置监听 * @param

    44411

    【RecyclerView】 十、RecyclerView 数据更新 ( 增加单条数据 | 批量增加数据 )

    文章目录 一、增加单条数据 二、增加多条数据 三、完整代码示例 四、RecyclerView 相关资料 一、增加单条数据 ---- 增加单条数据 : 调用 RecyclerView.Adapter 的...; 注意 : 调用该方法后 , 只会刷新与该位置相关的 item 元素 , 不会刷新其它元素 , 即使数据改变了 , 也不会刷新 ; 代码示例 : 在集合的开始位置插入一个元素 ;..., 这些数据不会被重新绑定 , * 尽管它们的位置已经发生了变化 ; * * @param position 最新插入的元素在新的数据集中的位置...---- 增加单条数据 : 调用 RecyclerView.Adapter 的 void notifyItemRangeInserted(int positionStart, int itemCount...适配器 */ public class Adapter extends RecyclerView.Adapter { @Override

    1.4K00

    Kotlin入门(23)适配器的进阶表达

    R.id.iv_pic) as ImageView         var tv_title = view.findViewById(R.id.tv_title) as TextView     } } 改进后的循环网格适配器...这下不管是在Activity代码,还是在适配器代码中,均可将控件名称拿来直接调用了。...,所以需要修改模块的build.gradle,在文件末尾添加下面几行配置,表示允许引用安卓插件库: androidExtensions {     experimental = true } 即使修改后的适配器代码用了新插件...,外部仍旧同原来一样给循环视图设置适配器,调用代码并无任何变化:     //第一种方式:使用采取了LayoutContainer的插件适配器     val adapter = RecyclerStaggeredAdapter...对于第一个的布局编码,可以考虑将其作为一个整型的输入参数;对于第二个的数据结构,可以考虑定义一个模板类,在外部调用时再指定具体的数据类;对于第三个的bind方法,若是Java编码早已束手无策,现用Kotlin

    1.8K41

    【Android 插件化】VirtualApp 源码分析 ( 添加应用源码分析 | LaunchpadAdapter 适配器 | 适配器添加元素 | PackageAppData 元素 )

    文章目录 一、添加应用源码分析 1、LaunchpadAdapter 适配器 2、适配器添加元素 3、PackageAppData 元素 一、添加应用源码分析 ---- 1、LaunchpadAdapter...适配器 在 io.virtualapp.home.HomeActivity 中 , 点击已安装应用列表中的元素 , 启动安装的 APK 应用 ; 下图显示的 RecyclerView 列表如下 :...中 , 列表数据源是 List mList , 调用 public void add(AppData model) 添加元素 ; public class LaunchpadAdapter..., 应用安装完毕后 , 会调用添加应用到列表中的方法 ; class HomePresenterImpl implements HomeContract.HomePresenter { @Override...info.packageName, false); } }); } } 3、PackageAppData 元素 上述 LaunchpadAdapter 列表适配器的数据源

    37700

    在 View 上使用挂起函数 | 实战

    分发新的状态 // TODO 等待 RecyclerView 的适配器对比新的数据集 // TODO 等待 RecyclerView 将新条目布局 // 滑动 RecyclerView...// 2.等待 RecyclerView 适配器对比新的数据集 // 滑动 RecyclerView 直到指定的剧集展示出来 recyclerView.scrollToItemId(nextEpisodeToWatch.id...) 这个方法使用了 RecyclerView 的 AdapterDataObserver 来实现监听适配器数据集的改变: /** * 等待给定的[itemId]添加到了数据集中,并返回该条目在适配器中的位置... RecyclerView.awaitScrollEnd() suspend fun RecyclerView.awaitScrollEnd() { // 平滑滚动被调用,只有在下一帧开始的时候...如注释中所说,由于 SmoothScroller 真正开始执行的时间是动画的下一帧,所以我们等待一帧后再判断滑动状态。

    1.4K30

    【Android 事件分发】ItemTouchHelper 实现拖动排序

    , 会调用该方法 , 如果拖动判定不成功 , 则不会调用该方法 ; onMove 方法的 第 2 参数 , 是拖动的条目索引 ; 第 3 参数 , 是拖动后的的位置条目 ; 可以通过调用 RecyclerView.ViewHolder...@NonNull RecyclerView.ViewHolder target) { // 拖动后交换数据, 该方法中交换 Adapter 中的数据, 并刷新界面 Log.i...适配器中的交换排序操作 删除数据列表中的元素 , 并调用 notifyItemRemoved 触发删除动画 ; public class Adapter extends RecyclerView.Adapter...适配器 */ public class Adapter extends RecyclerView.Adapter { private...@NonNull RecyclerView.ViewHolder target) { // 拖动后交换数据, 该方法中交换 Adapter 中的数据, 并刷新界面 Log.i

    2.3K10

    深入浅出 RecyclerView

    3.设置适配器 recyclerview.setAdapter(adapter); 适配器,同 ListView 一样,用来设置每个item显示内容的。...使用 demo 可以查看:Github 【RecyclerView简单使用】 添加删除 item 的动画 同 ListView 每次修改了数据源后,都要调用 notifyDataSetChanged()...在添加或删除了数据后,RecyclerView 还提供了一个默认的动画效果,来改变显示。...adapter封装 其实很早之前写过一篇关于 RecyclerView 适配器的封装,所以这不再赘述了,传送门:RecyclerView的通用适配器 使用 demo 可以查看:Github 【RecyclerView...Adapter工作原理 首先是适配器,适配器的作用都是类似的,用于提供每个 item 视图,并返回给RecyclerView 作为其子布局添加到内部。

    1.7K60

    安卓开发——Recycleview

    :30.0.0' } 复制代码 其中v7:后面的版本号与此文件下 compileSdkVersion后所跟数字相同,如下图所示 修改原有xml文件 为了实现RecyclerView,我们将初始的...layout_height="wrap_content"/> 在布局中添加了 weixinRecycleViewAdapter 微件之后,需要获取对象句柄,将其连接到布局管理器,并为要显示的数据附加适配器...创建适配器实现步骤如下: ① 创建Adapter:创建一个继承RecyclerView.Adapter的Adapter类 ② 创建ViewHolder:在Adapter中创建一个继承RecyclerView.ViewHolder...在这里,补充一个知识点,关于RecyclerView的调用顺序总是按照: 获取大小——>绑定布局——>加载ViewHolder类——>绑定数据 这样一个规律的,通过这样的规律,我们就能知道是按照怎样的顺序来调用这些重载函数的了...(linearLayoutManager); 2.使用RecycleView时适配器要继承 RecyclerView.AdapterRecyclerView.ViewHolder>,adapter中必须实现

    2.2K11
    领券