日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android.support.v7 fragme,打造最强RecyclerView侧滑菜单,长按拖拽Item,滑动删除Item

發布時間:2025/3/11 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android.support.v7 fragme,打造最强RecyclerView侧滑菜单,长按拖拽Item,滑动删除Item 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前幾天寫了一片關于RecyclerView滑動刪除Item,RecyclerView長按拖拽Item的博客,本來很簡單一個使用,閱讀量還挺高的,原博客傳送門。

今天介紹一個RecyclerView Item側滑菜單,RecyclerView滑動刪除Item,RecyclerView長按拖拽Item的開源項目,效果看下圖,大家也可以下載演示apk具體操作體驗下SwipeRecyclerView的強大。

需要說明的是,本庫沒有對RecyclerView做大的修改,只是ItemView的封裝。看起來是對RecyclerView的修改,其實僅僅是為RecyclerView添加了使用的方法API而已。

今天的博客將完美解決這些問題:

RecyclerView側滑菜單(左右兩側都可以添加)(List、Grid兩種形式)。

RecyclerView長按拖拽Item(List、Grid兩種形式)。

RecyclerView側滑刪除item(List、Grid兩種形式)。

指定RecyclerView的某一個Item不能滑動刪除或長按拖拽(List、Grid兩種形式)。

根據Item的ViewType來決定顯示的菜單。

用SwipeMenuLayout在任何地方都可以實現你自己的側滑菜單。

SwipeRecyclerView的源碼托管在Github:https://github.com/yanzhenjie...,歡迎Star。

如果不能打開Github,直接從CSDN上下載Demo。

效果圖

如果網頁加載速度慢,可以下載demo的apk看效果。

側滑菜單

RecyclerView Item側滑菜單。左右兩側都可以添加側滑菜單,菜單Item包括圖標、文字、點擊背景顏色等。也可以根據Item的ViewType來決定某個Item的Menu的樣子、類型等:

拖拽、側滑菜單

RecyclerView Item長按后拖拽Item移動位置。同時支持Item長按拖拽、Item側滑顯示菜單。包括各種布局管理器,比如LinearLayoutManager、GridLayoutManager都完美支持:

拖拽、側滑刪除

可以指定某個Item不能被拖拽,指定某個Item不能被滑動刪除:

引用方法

Eclipse 請自行下載源碼。

AndroidStudio使用Gradle構建添加依賴(推薦)

compile 'com.yanzhenjie:recyclerview-swipe:1.0.0'

本庫引用的RecyclerView版本如下:

compile 'com.android.support:recyclerview-v7:23.4.0'

使用介紹

這里列出關鍵實現,具體請參考demo,或者加我博客左側的交流群或者關注我的公眾微信一起來討論。

實現原理

側滑菜單使用自定義Layout實現,繼承自FragmeLayout。

長按拖拽Item、滑動Item刪除由ItemTouchHelper實現。

啟用SwipeReyclerView的長按Item拖拽功能和側滑刪除功能

recyclerView.setLongPressDragEnabled(true);// 開啟長按拖拽

recyclerView.setItemViewSwipeEnabled(true);// 開啟滑動刪除。

recyclerView.setOnItemMoveListener(onItemMoveListener);// 監聽拖拽和側滑刪除,更新UI。

...

/**

* 當Item移動的時候監聽。

*/

private OnItemMoveListener onItemMoveListener = new OnItemMoveListener() {

@Override

public boolean onItemMove(int fromPosition, int toPosition) {

// 當Item被拖拽的時候,交換Item的位置。

Collections.swap(mStrings, fromPosition, toPosition);

mMenuAdapter.notifyItemMoved(fromPosition, toPosition);

return true;

}

@Override

public void onItemDismiss(int position) {

// 當Item被滑動刪除的時候,刪除Item。

mStrings.remove(position);

mMenuAdapter.notifyItemRemoved(position);

Toast.show(mContext, "第" + position + "條被刪除。");

}

};

添加Item側滑菜單

側滑菜單支持自動打開某個Item的菜單,并可以指定是左邊還是右邊的:

// 打開第一個Item的左側菜單。

recyclerView.openLeftMenu(0);

// 打開第一個Item的右側菜單。

recyclerView.openRightMenu(0);

第一步,引用自定義View:SwipeMenuReyclerView:

android:id="@+id/recycler_view"

android:layout_width="match_parent"

android:layout_height="wrap_content"

app:layout_behavior="@string/appbar_scrolling_view_behavior" />

第二步,設置菜單創建器、菜單點擊監聽:

SwipeMenuRecyclerView swipeMenuRecyclerView = findViewById(R.id.recycler_view);

// 設置菜單創建器。

swipeMenuRecyclerView.setSwipeMenuCreator(swipeMenuCreator);

// 設置菜單Item點擊監聽。

swipeMenuRecyclerView.setSwipeMenuItemClickListener(menuItemClickListener);

第三步,菜單創建器創建菜單:

/**

* 菜單創建器。在Item要創建菜單的時候調用。

*/

private SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {

@Override

public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {

SwipeMenuItem addItem = new SwipeMenuItem(mContext)

.setBackgroundDrawable(R.drawable.selector_green)// 點擊的背景。

.setImage(R.mipmap.ic_action_add) // 圖標。

.setWidth(size) // 寬度。

.setHeight(size); // 高度。

swipeLeftMenu.addMenuItem(addItem); // 添加一個按鈕到左側菜單。

SwipeMenuItem deleteItem = new SwipeMenuItem(mContext)

.setBackgroundDrawable(R.drawable.selector_red)

.setImage(R.mipmap.ic_action_delete) // 圖標。

.setText("刪除") // 文字。

.setTextColor(Color.WHITE) // 文字顏色。

.setTextSize(16) // 文字大小。

.setWidth(size)

.setHeight(size);

swipeRightMenu.addMenuItem(deleteItem);// 添加一個按鈕到右側側菜單。

}

};

第四步,繼承SwipeMenuAdapter,和正常的Adapter一樣使用:

public class MenuAdapter extends SwipeMenuAdapter {

@Override

public int getItemCount() {

return 0;

}

@Override

public View onCreateContentView(ViewGroup parent, int viewType) {

return null;

}

@Override

public ViewHolder onCompatCreateViewHolder(View realContentView, int viewType) {

return null;

}

@Override

public void onBindViewHolder(MenuAdapter.DefaultViewHolder holder, int position) {

}

}

就到這里,更多的細節,請參考Github上的demo和源碼,源碼demo下載傳送門。

歡迎加入我的技術交流群:Android 愚公移山③ 547839514

歡迎關注我的公眾號,長期不斷推送優選博文、優秀開源項目,歡迎投稿:

總結

以上是生活随笔為你收集整理的android.support.v7 fragme,打造最强RecyclerView侧滑菜单,长按拖拽Item,滑动删除Item的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。