RecycleView实现item侧滑删除与拖拽
程序员文章站
2022-03-07 11:12:48
本文实例为大家分享了recycleview实现item侧滑删除与拖拽的具体代码,供大家参考,具体内容如下一、添加依赖// 侧滑删除依赖implementation 'com.yanzhenjie.re...
本文实例为大家分享了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侧滑删除与拖拽
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。