• Stars
    star
    299
  • Rank 139,269 (Top 3 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

RecyclerViewEvent

本项目展示内容:

  • 点击事件、长按事件
  • 分割线
  • 拖曳排序、侧滑删除
  • 拖曳排序 & 首个固定
  • 复用错乱(复选框、编辑框)
  • 定向刷新
  • 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

具体查看源码说明:Activity AdapterDiffCallback

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 ()

More Repositories

1

Android-Animation-Set

📚 Android 所有动画系列详尽教程。 Explain all animations in Android.
Java
2,804
star
2

QBox

🐈 RxJava+Retrofit+Okhttp+Glide + A life tool App, contains modules: news; jokes; constellation fortune; LED; weather; calendar; two-dimensional code, and more ... 小秋魔盒是一个生活工具 App,主要功能有:新闻资讯;微信精选美文;笑话趣图;星座运势;LED字幕;天气;日历;二维码;手电筒;老黄历。在开发中尽可能多的用了目前比较流行的框架和库。
Java
1,380
star
3

PageTransformerHelp

👍 A PageTransformer library for Android ViewPager,have some Banner styles. ViewPager 实现轮播图、实现卡片切换。
Java
599
star
4

ContourView

🦄 利用本库绘制出贝塞尔曲线魔炫背景。Customize view:Draw the magic dazzle background with Bézier.
Java
575
star
5

CartLayout

🦄 使用 RecyclerView 实现店铺分组购物车。 高仿京东购物车、高仿淘宝购物车、高仿天猫购物车
Java
130
star
6

AndroidBang

《Android 江湖花名册》
114
star
7

flutter_ui_kit

UI Kit of CookMe by Flutter;
Dart
45
star
8

FontTest

屏幕适配的顶级淫技:使用 TextView 来显示图片
Java
27
star
9

AnchorImageViewDemo

图片锚点定位;【图片画圈定位 请移步 👉https://github.com/OCNYang/DrawPartViewDemo】
Java
15
star
10

ConstraintLayout_Guide

全面讲解 ConstraintLayout 相关知识,目前最强大的布局控件,没有之一,不接受反驳。
Kotlin
8
star
11

DrawPartViewDemo

🎯 图片画圈定位;【图片锚点定位 请移步 👉https://github.com/OCNYang/AnchorImageViewDemo】
Java
6
star
12

Flutter-Notes

收集学习 Flutter 不错的教程。
5
star
13

Linux

开启 Linux 之行
5
star
14

Support

索拉卡-通用库
Java
2
star
15

GSYVideoPlayer-master

Java
1
star
16

OCNYang

GitHub 首页 简介
1
star
17

iconfont2strings

批量将 iconfont 中的字符转换成 Android 中的字符串资源 strings.xml
Java
1
star
18

EFall

💌 筑一座柔城,愿每一次心的疲惫,都能在这得到安慰......
1
star