RecycleView實(shí)現(xiàn)item側(cè)滑刪除與拖拽
本文實(shí)例為大家分享了RecycleView實(shí)現(xiàn)item側(cè)滑刪除與拖拽的具體代碼,供大家參考,具體內(nèi)容如下
一、添加依賴
// 側(cè)滑刪除依賴 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>
三、代碼實(shí)現(xiàn)
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<>(); //存數(shù)據(jù)的集合
MyAdapter myAdapter; //適配器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
initView();
//得到數(shù)據(jù), 數(shù)據(jù)可以模擬, 不在展示
initData();
//監(jiān)聽事件
initListener();
}
// TODO 3 監(jiān)聽事件
private void initListener() {
srv.setItemViewSwipeEnabled(true); //側(cè)滑刪除 默認(rèn)關(guān)閉
srv.setLongPressDragEnabled(true); //拖拽排序 默認(rèn)關(guān)閉
// 拖拽監(jiān)聽
srv.setOnItemMoveListener(new OnItemMoveListener() {
// 此方法在Item拖拽交換位置時(shí)被調(diào)用。
@Override
public boolean onItemMove(RecyclerView.ViewHolder srcHolder, RecyclerView.ViewHolder targetHolder) {
// 第一個(gè)參數(shù)是要交換為之的Item,第二個(gè)是目標(biāo)位置的Item。
int adapterPosition = srcHolder.getAdapterPosition();
int adapterPosition1 = targetHolder.getAdapterPosition();
// swap交換數(shù)據(jù),并更新adapter。
Collections.swap(dataAll, adapterPosition, adapterPosition1);
myAdapter.notifyItemMoved(adapterPosition, adapterPosition1);
return true;// 返回true,表示數(shù)據(jù)交換成功,ItemView可以交換位置。
}
// 此方法在Item在側(cè)滑刪除時(shí)被調(diào)用。
@Override
public void onItemDismiss(RecyclerView.ViewHolder srcHolder) {
// 從數(shù)據(jù)源移除該Item對(duì)應(yīng)的數(shù)據(jù),并刷新Adapter。
int position = srcHolder.getAdapterPosition();
dataAll.remove(position);
myAdapter.notifyItemRemoved(position);
}
});
}
//TODO 2 得到數(shù)據(jù)
private void initData() {
//這里使用回調(diào)的方式得到的數(shù)據(jù)
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);
}
}
其他功能具體實(shí)現(xiàn)請(qǐng)參考:RecycleView側(cè)滑刪除與拖拽
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解關(guān)于Android Studio中安裝和gradle的一些坑
本篇文章主要介紹了關(guān)于Android Studio中安裝和gradle的一些坑,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
Android中activity跳轉(zhuǎn)按鈕事件的四種寫法
這篇文章主要介紹了Android中activity跳轉(zhuǎn)按鈕事件的四種寫法,下文中包括四個(gè)activity的內(nèi)容詳解,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10
android如何設(shè)置Activity背景色為透明色
本篇文章主要介紹了android如何設(shè)置Activity背景色為透明色,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
Dialog底部彈出自定義view并且伴隨動(dòng)畫彈出和消失
這篇文章主要介紹了Dialog底部彈出自定義view并且伴隨動(dòng)畫彈出和消失的相關(guān)資料,需要的朋友可以參考下2016-12-12
gradle tool升級(jí)到3.0注意事項(xiàng)小結(jié)
這篇文章主要介紹了gradle tool升級(jí)到3.0注意事項(xiàng)及修改相關(guān)文件介紹,需要的朋友可以參考下2018-02-02
Android編程使用加速度傳感器實(shí)現(xiàn)搖一搖功能及優(yōu)化的方法詳解
這篇文章主要介紹了Android編程使用加速度傳感器實(shí)現(xiàn)搖一搖功能及優(yōu)化的方法,結(jié)合實(shí)例形式分析了Android傳感器的調(diào)用方法、參數(shù)含義及具體使用技巧,需要的朋友可以參考下2017-08-08
Android下的CMD命令之關(guān)機(jī)重啟及重啟recovery
這篇文章主要介紹了Android下的CMD命令之關(guān)機(jī)重啟及重啟recovery,本文涉及到cmd命令知識(shí)點(diǎn),通過了解cmd命令就可以很容易的實(shí)現(xiàn)此功能了,需要的朋友一起看看吧2016-08-08

