本文实例为大家分享了RecycleView实现item侧滑删除与拖拽的具体代码,供大家参考,具体内容如下

一、添加依赖

// 侧滑删除依赖
implementation 'com.yanzhenjie.recyclerview:support:1.3.2'

二、布局文件

这里使用的的控件是: com.yanzhenjie.recyclerview.SwipeRecyclerView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".MainActivity">
 
 <com.yanzhenjie.recyclerview.SwipeRecyclerView
  android:id="@ id/srv"
  android:layout_width="match_parent"
  android:layout_height="match_parent" />

</RelativeLayout>

三、代码实现

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import com.google.gson.Gson;
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
import com.yanzhenjie.recyclerview.touch.OnItemMoveListener;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class MainActivity extends AppCompatActivity {
 SwipeRecyclerView srv; //控件
 List<JavaBean.DataBean> dataAll = new ArrayList<>(); //存数据的集合
 MyAdapter myAdapter; //适配器

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  //初始化控件
  initView();

  //得到数据, 数据可以模拟, 不在展示
  initData();

  //监听事件
  initListener();
 }

 // TODO 3 监听事件
 private void initListener() {
  srv.setItemViewSwipeEnabled(true); //侧滑删除 默认关闭
  srv.setLongPressDragEnabled(true); //拖拽排序 默认关闭
  // 拖拽监听
  srv.setOnItemMoveListener(new OnItemMoveListener() {
   // 此方法在Item拖拽交换位置时被调用。
   @Override
   public boolean onItemMove(RecyclerView.ViewHolder srcHolder, RecyclerView.ViewHolder targetHolder) {
    // 第一个参数是要交换为之的Item,第二个是目标位置的Item。
    int adapterPosition = srcHolder.getAdapterPosition();
    int adapterPosition1 = targetHolder.getAdapterPosition();
    // swap交换数据,并更新adapter。
    Collections.swap(dataAll, adapterPosition, adapterPosition1);
    myAdapter.notifyItemMoved(adapterPosition, adapterPosition1);

    return true;// 返回true,表示数据交换成功,ItemView可以交换位置。
   }

   // 此方法在Item在侧滑删除时被调用。
   @Override
   public void onItemDismiss(RecyclerView.ViewHolder srcHolder) {
    // 从数据源移除该Item对应的数据,并刷新Adapter。
    int position = srcHolder.getAdapterPosition();
    dataAll.remove(position);
    myAdapter.notifyItemRemoved(position);
   }
  });
 }

 //TODO 2 得到数据
 private void initData() {
  //这里使用回调的方式得到的数据
  OkgoData.getInstance().getDataByOkGo(new DataCallBack() {
   @Override
   public void getDataJson(String json) {
    List<JavaBean.DataBean> data = new Gson().fromJson(json, JavaBean.class).getData();
    dataAll.clear();
    dataAll.addAll(data);
    myAdapter.setNewData(dataAll);
    myAdapter.notifyDataSetChanged(); //适配器通知更新
   }
  });
 }

 //TODO 1 初始化控件
 private void initView() {
  srv = findViewById(R.id.srv); //找到控件

  // 添加下划线
  DividerItemDecoration decoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
  srv.addItemDecoration(decoration);
  //添加适配器
  myAdapter = new MyAdapter(R.layout.layout_adapter_item, dataAll);
  srv.setAdapter(myAdapter);

  //添加布局管理 必须添加不然无法显示
  LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
  srv.setLayoutManager(layoutManager);
 }
}

其他功能具体实现请参考:RecycleView侧滑删除与拖拽

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Devmax。

RecycleView实现item侧滑删除与拖拽的更多相关文章

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. Android实现自动轮询的RecycleView

    这篇文章主要为大家详细介绍了Android实现自动轮询的RecycleView,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. react.js组件实现拖拽复制和可排序的示例代码

    这篇文章主要介绍了react.js组件实现拖拽复制和可排序的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. Ubuntu彻底删除PHP7.0的方法

    这篇文章主要介绍了Ubuntu彻底删除PHP7.0的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  5. angularJS实现动态添加,删除div方法

    下面小编就为大家分享一篇angularJS实现动态添加,删除div方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  6. vue实现拖拽交换位置

    这篇文章主要为大家详细介绍了vue实现拖拽交换位置,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  7. Python实现删除windows下的长路径文件

    这篇文章主要为大家详细介绍一下如何利用Python语言实现删除windows下的长路径文件功能,文中的示例代码讲解详细,具有一定参考借鉴价值,感兴趣的可以了解一下

  8. Vue实用功能之实现拖拽元素、列表拖拽排序

    在日常开发中,特别是管理端,经常会遇到要实现拖拽排序的效果,下面这篇文章主要给大家介绍了关于Vue实用功能之实现拖拽元素、列表拖拽排序的相关资料,需要的朋友可以参考下

  9. vue draggable组件实现拖拽及点击无效问题的解决

    这篇文章主要介绍了vue draggable组件实现拖拽及点击无效问题的解决,只需要在设置handle属性就可以了,.defaultTypeTag 是要拖拽的块的类名,要注意的是需要做点击事件的项不能包含在这个类名里面,不然会无法触发点击事件,详细解决办法跟随小编一起学习吧

  10. php 删除指定文件夹的实例讲解

    下面小编就为大家带来一篇php 删除指定文件夹的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

随机推荐

  1. Flutter 网络请求框架封装详解

    这篇文章主要介绍了Flutter 网络请求框架封装详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. Android单选按钮RadioButton的使用详解

    今天小编就为大家分享一篇关于Android单选按钮RadioButton的使用详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  3. 解决android studio 打包发现generate signed apk 消失不见问题

    这篇文章主要介绍了解决android studio 打包发现generate signed apk 消失不见问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  4. Android 实现自定义圆形listview功能的实例代码

    这篇文章主要介绍了Android 实现自定义圆形listview功能的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. 详解Android studio 动态fragment的用法

    这篇文章主要介绍了Android studio 动态fragment的用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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

    这篇文章主要介绍了Android用RecyclerView实现图标拖拽排序以及增删管理的方法,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下

  7. Android notifyDataSetChanged() 动态更新ListView案例详解

    这篇文章主要介绍了Android notifyDataSetChanged() 动态更新ListView案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

  8. Android自定义View实现弹幕效果

    这篇文章主要为大家详细介绍了Android自定义View实现弹幕效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  9. Android自定义View实现跟随手指移动

    这篇文章主要为大家详细介绍了Android自定义View实现跟随手指移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. Android实现多点触摸操作

    这篇文章主要介绍了Android实现多点触摸操作,实现图片的放大、缩小和旋转等处理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部