您好,登錄后才能下訂單哦!
利用RecycleView怎么實(shí)現(xiàn)一個(gè)側(cè)滑刪除功能?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
一、添加依賴
// 側(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); //添加布局管理 必須添加不然無(wú)法顯示 LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); srv.setLayoutManager(layoutManager); } }
看完上述內(nèi)容,你們掌握利用RecycleView怎么實(shí)現(xiàn)一個(gè)側(cè)滑刪除功能的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。