91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用RecycleView怎么實現一個側滑刪除功能

發布時間:2020-11-30 15:12:11 來源:億速云 閱讀:225 作者:Leah 欄目:開發技術

利用RecycleView怎么實現一個側滑刪除功能?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

一、添加依賴

// 側滑刪除依賴
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怎么實現一個側滑刪除功能的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贡嘎县| 安龙县| 八宿县| 安新县| 九江市| 黄平县| 平顺县| 青田县| 饶平县| 旬阳县| 饶河县| 扬中市| 区。| 松滋市| 襄汾县| 稻城县| 改则县| 从化市| 翁牛特旗| 东源县| 科技| 讷河市| 荣昌县| 阿坝| 筠连县| 临泉县| 封开县| 洛隆县| 苏尼特右旗| 固原市| 永登县| 彭水| 阜平县| 扬州市| 常德市| 邻水| 高陵县| 犍为县| 乐山市| 东兰县| 亳州市|