Android用RecyclerView实现图标拖拽排序以及增删管理

 更新时间:2021年03月17日 10:18:21   作者:Joehaivo飞羽  
这篇文章主要介绍了Android用RecyclerView实现图标拖拽排序以及增删管理的方法,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下

1. 效果图

2. 基本的功能

在非编辑状态下可以直接点击图标进行跳转
在编辑状态可以拖拽、添加、删除操作
已被添加过的不能再次添加

3. 实现的思路

用两个RecyclerView实现,同时维护两个数据源,上部是常用应用,最多可以放8个;下部是全部应用。

1. 每个应用图标的状态用枚举Option表示

// 当前的操作状态
enum class Option {
 ADD, REMOVE, NONE
}

2. 在处于编辑状态时创建ItemTouchHelper对象并attch到RecyclerView上

if (enable) {
 itemTouchHelper.attachToRecyclerView(binding.rvApps)
} 

其中,在实现ItemTouchHelper.Callback接口的onMove() 函数中,此时表示用户已经抬手,而图标位置已经发生了变动,此时将界面上图标的顺序同步回Adapter的数据源中:

val newData = mutableListOf<Pair<String, Int>>()
commonAppsAdapter.data.forEachIndexed { index, _ ->
 val holder = recyclerView.findViewHolderForAdapterPosition(index) as AppsHolder
 newData.add(Pair(holder.funcUrl, index))
}
for (i in newData) {
  val sameFuncIndex = commonAppsAdapter.data.indexOfFirst { i.first == it.uid }
  Collections.swap(commonAppsAdapter.data, i.second, sameFuncIndex)
}

3. 当应用图标从上部被删除时,需要将其添加到下部,并将其重新设为可添加状态

commonAppsAdapter.onRemoveBtnClickListener = object : OnRemoveBtnClickListener {
 override fun onClick(view: View, appBean: AppBean) {
  val theSameElementIndex = allAppsAdapter.data.indexOfFirst { it.uid == appBean.uid }
  if (theSameElementIndex < 0) return
  allAppsAdapter.data[theSameElementIndex].option = AppBean.Companion.Option.ADD
  allAppsAdapter.notifyItemChanged(theSameElementIndex)
 }
}

源码请前往Github

以上就是Android用RecyclerView实现图标拖拽排序以及增删管理的详细内容,更多关于Android 实现图标拖拽排序以及增删管理的资料请关注脚本之家其它相关文章!

相关文章

  • AndroidStudio 设置格式化断行宽度教程

    AndroidStudio 设置格式化断行宽度教程

    这篇文章主要介绍了AndroidStudio 设置格式化断行宽度教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android实现一个带粘连效果的LoadingBar

    Android实现一个带粘连效果的LoadingBar

    Loading效果相信大家应该都实现过,最近发现了一个不错的效果,决定分享给大家,所以下面这篇文章主要给大家介绍了关于利用Android实现一个带粘连效果的LoadingBar的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12
  • Android Dialog对话框用法实例详解

    Android Dialog对话框用法实例详解

    这篇文章主要介绍了Android Dialog对话框用法,结合实例形式分析了Android使用Dialog对话框过程中所涉及的创建、保存、回复等操作相关技巧与注意事项,需要的朋友可以参考下
    2016-07-07
  • Android 实现抖音头像底部弹框效果的实例代码

    Android 实现抖音头像底部弹框效果的实例代码

    这篇文章主要介绍了Android 实现抖音头像底部弹框效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Android Toolbar应用栏使用方法简介

    Android Toolbar应用栏使用方法简介

    App中应用栏是十分常见的,通常应用栏会显示当前页面的标题,还有一些操作按钮,例如返回、搜索、扫码等。本文介绍如何通过Toolbar实现应用栏
    2022-12-12
  • Android用动画显示或隐藏视图

    Android用动画显示或隐藏视图

    大家好,本篇文章主要讲的是Android用动画显示或隐藏视图,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 代码从windows下visual studio到andriod平台迁移实现步骤

    代码从windows下visual studio到andriod平台迁移实现步骤

    这篇文章主要介绍了代码从windows下visual studio到andriod平台迁移的修改记录的相关资料,需要的朋友可以参考下
    2017-01-01
  • Android实现手机多点触摸画圆

    Android实现手机多点触摸画圆

    这篇文章主要为大家详细介绍了Android实现手机多点触摸画圆,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Angular5.0.0新特性

    Angular5.0.0新特性

    Angular5.0.0是一款非常优秀的前端JS框架,已经被用于google多款产品当中,这篇文章主要介绍了Angular5.0.0新特性,需要的朋友可以参考下
    2017-11-11
  • Android多边形区域递归种子填充算法的示例代码

    Android多边形区域递归种子填充算法的示例代码

    这篇文章主要介绍了Android多边形区域递归种子填充算法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05

最新评论