当前位置: 首页 > 编程笔记 >

RecycleView实现item侧滑删除与拖拽

蒋曾笑
2023-03-14
本文向大家介绍RecycleView实现item侧滑删除与拖拽,包括了RecycleView实现item侧滑删除与拖拽的使用技巧和注意事项,需要的朋友参考一下

本文实例为大家分享了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侧滑删除与拖拽

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

 类似资料:
  • 本文向大家介绍Android使用Item Swipemenulistview实现仿QQ侧滑删除功能,包括了Android使用Item Swipemenulistview实现仿QQ侧滑删除功能的使用技巧和注意事项,需要的朋友参考一下  大家都用过QQ,肯定有人好奇QQ滑动删除Item的效果是怎样实现的,其实我们使用Swipemenulistview就可以简单的实现。先看看我们项目中的效果:    使

  • 本文向大家介绍Android实现QQ侧滑(删除、置顶等)功能,包括了Android实现QQ侧滑(删除、置顶等)功能的使用技巧和注意事项,需要的朋友参考一下 实现类似QQ滑动出现可操作项的功能,在网上看到有人自定义LinearLayout实现这个效果,但是灵活性有限。此demo使用开源项目SwipeLayout实现该功能。关于SwipeLayout的常用设置和属性,这里都做介绍,下面进入正题。 一、

  • 本文向大家介绍android基于SwipeRefreshLayout实现类QQ的侧滑删除,包括了android基于SwipeRefreshLayout实现类QQ的侧滑删除的使用技巧和注意事项,需要的朋友参考一下 前言 记得去年做一个聊天项目需要实现类似QQ的下拉刷新并且有侧滑删除的功能,在网上找了很久都没有QQ的完美,多多少少存在各种的问题,最后把下拉刷新的功能去掉后,只保留了侧滑删除的功能才找到

  • 本文向大家介绍Android实现3种侧滑效果(仿qq侧滑、抽屉侧滑、普通侧滑),包括了Android实现3种侧滑效果(仿qq侧滑、抽屉侧滑、普通侧滑)的使用技巧和注意事项,需要的朋友参考一下 自己实现了一下侧滑的三种方式(注释都写代码里了) 本文Demo下载地址:Andriod侧滑 本文实现所需框架:nineoldandroids下载地址:nineoldandroids 1.普通侧滑: 主要是基于

  • 本文向大家介绍Android高仿QQ6.0侧滑删除实例代码,包括了Android高仿QQ6.0侧滑删除实例代码的使用技巧和注意事项,需要的朋友参考一下 推荐阅读: 先给大家分享一下,侧滑删除,布局也就是前面一个item,然后有两个隐藏的按钮(TextView也可以),然后我们可以向左侧滑动,然后显示出来,然后对delete(删除键)实现监听,就可以了哈。好了那就来看看代码怎么实现的吧。 首先和之前

  • 本文向大家介绍Android中RecyclerView拖拽、侧删功能的实现代码,包括了Android中RecyclerView拖拽、侧删功能的实现代码的使用技巧和注意事项,需要的朋友参考一下 废话不多说,下面展示一下效果。 这是GridView主文件实现。 代码不难理解,就是activity里面设置一大堆初始化的东西。RecyclerView 初始化,setLayoutManager、addIte