Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

RecyclerView onItemClick、onItemLongClick、drag、swipe、divider、reuse disorder RecyclerView 梳理:点击&长按事件、分割线、拖曳排序、滑动删除、优雅解决 EditText 和 CheckBox 复用错乱问题、定向刷新、DiffUtil、局部刷新

License

NotificationsYou must be signed in to change notification settings

OCNYang/RecyclerViewEvent

Repository files navigation

本项目展示内容:

  • 点击事件、长按事件
  • 分割线
  • 拖曳排序、侧滑删除
  • 拖曳排序 & 首个固定
  • 复用错乱(复选框、编辑框)
  • 定向刷新
  • DiffUtil 的使用
  • Paging 3 的使用
  • DiffUtil & 定向刷新 结合使用
  • 条目长按的上下文菜单按钮
  • ConcatAdapter (旧名:MergeAdapter)




效果图  

  1. swipe and drag.拖曳 + 滑动删除
  2. drag. 拖曳 + 首个 item 固定

PointRefreshPointRefresh

1. 基础讲解

这次主要是把 RecyclerView 比较常用的基本的点,在这里集中整理一下。从这篇文章主要梳理以下几点:

  • 优雅的实现:item 点击事件 & item 长点击事件
  • RecyclerView 添加 divider 的标准姿势
  • RecyclerView 实现 item 的拖曳排序和滑动删除
  • 拖曳排序时,限制首个 item 固定的实现

详解介绍请看本项目对应的讲解文章:
RecyclerView 梳理:点击&长按事件、分割线、拖曳排序、滑动删除

2. 解决 RecyclerView 复用错乱 之 优雅方式

当 RcyclerView 中存在 CheckBox 或 EditText 时,因为复用机制的存在,会在滚动时造成数据混乱。虽然网上流传的有多种方法来解决,但都比较繁琐或存在一定缺陷。这里给大家提供一种比较优雅而合理的方式来解决复用错乱的问题:

reuse disorder
图片显示失败?点击查看

方法详情和讲解请看源码

3. 使用notifyItemChanged(int position, @Nullable Object payload) 定向刷新

PointRefresh

仔细观察效果图,会发现:非定向刷新时条目会有闪动;定向刷新不会有闪动

具体查看源码说明:NotifyItemAdapter.onBindViewHolder(holder: NotifyItemViewHolder, position: Int, payloads: MutableList)

4. 使用 DiffUtil 实现局部刷新

DiffUtil

具体查看源码说明:ActivityAdapterDiffCallback

5. 使用 Paging 3 分页加载

Paging3

具体查看源码说明:paging3 相关代码

6. ConcatAdapter 实现多个不同的 Adapter 合并成一个

ConcatAdapter

使用方式:

recyclerView.adapter =ConcatAdapter(mHeaderAdapter,mAdapter,mFooterAdapter)
  • 可以使不同的 Adapter (不同数据、不同布局) 合并成一个 Adapter 设置给 RecyclerView 显示;
  • 功能有点类似多 ItemViewType 的 Adapter,不同的是每个 Adapter 是从上到下按顺序显示的,不能混排
  • 您可能使用过ViewHolder.getAdapterPosition 来获得 Adapter 中某个 ViewHolder 的位置。现在,因为我们合并了多个 Adapter,作为代替,您需要调用ViewHolder.getBindingAdapterPosition ()

About

RecyclerView onItemClick、onItemLongClick、drag、swipe、divider、reuse disorder RecyclerView 梳理:点击&长按事件、分割线、拖曳排序、滑动删除、优雅解决 EditText 和 CheckBox 复用错乱问题、定向刷新、DiffUtil、局部刷新

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp