本文介紹的庫(kù)中的側(cè)滑效果借鑒自SwipeMenu,并對(duì)SipwMenu的源碼做了修改與Bug修復(fù),然后才開發(fā)出的SwipeRecyclerView。
SwipeRecyclerView將完美解決這些問(wèn)題:
引用方法
AndroidStudio使用Gradle構(gòu)建添加依賴(推薦)
compile 'com.yanzhenjie:recyclerview-swipe:1.0.2'
Or Maven:
<dependency> <groupId>com.yanzhenjie</groupId> <artifactId>recyclerview-swipe</artifactId> <version>1.0.2</version> <type>pom</type></dependency>
我在開發(fā)SwipeRecyclerView時(shí)引用的RecyclerView版本如下:
compile 'com.android.support:recyclerview-v7:23.4.0'
效果圖
gif有一些失真,且網(wǎng)頁(yè)加載速度慢,可以[下載demo的apk][3]看效果。
側(cè)滑菜單


和ViewPager嵌套 下拉刷新、自動(dòng)加載更多


長(zhǎng)按拖拽 側(cè)滑菜單結(jié)合使用


直接滑動(dòng)刪除 長(zhǎng)按拖拽Item排序


豎型菜單 用自定義布局實(shí)現(xiàn)自己的菜單


使用介紹
這里列出關(guān)鍵實(shí)現(xiàn),具體請(qǐng)參考demo,或者加最上面的交流群一起討論。 更多教程請(qǐng)進(jìn)入我的博客查看。
啟用SwipeReyclerView的長(zhǎng)按Item拖拽功能和側(cè)滑刪除功能
recyclerView.setLongPressDragEnabled(true);// 開啟長(zhǎng)按拖拽recyclerView.setItemViewSwipeEnabled(true);// 開啟滑動(dòng)刪除。recyclerView.setOnItemMoveListener(onItemMoveListener);// 監(jiān)聽拖拽和側(cè)滑刪除,更新UI和數(shù)據(jù)。
添加Item側(cè)滑菜單
側(cè)滑菜單支持自動(dòng)打開某個(gè)Item的菜單,并可以指定是左邊還是右邊的:
// 打開第一個(gè)Item的左側(cè)菜單。recyclerView.openLeftMenu(0);// 打開第一個(gè)Item的右側(cè)菜單。recyclerView.openRightMenu(0);
第一步,引用自定義View:SwipeMenuReyclerView:
<com.yanzhenjie.recyclerview.swipe.SwipeMenuRecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior" />
第二步,設(shè)置菜單創(chuàng)建器、菜單點(diǎn)擊監(jiān)聽:
SwipeMenuRecyclerView swipeMenuRecyclerView = findViewById(R.id.recycler_view);// 設(shè)置菜單創(chuàng)建器。swipeMenuRecyclerView.setSwipeMenuCreator(swipeMenuCreator);// 設(shè)置菜單Item點(diǎn)擊監(jiān)聽。swipeMenuRecyclerView.setSwipeMenuItemClickListener(menuItemClickListener);
第三步,菜單創(chuàng)建器創(chuàng)建菜單:
/** * 菜單創(chuàng)建器。在Item要?jiǎng)?chuàng)建菜單的時(shí)候調(diào)用。 */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)// 點(diǎn)擊的背景。 .setImage(R.mipmap.ic_action_add) // 圖標(biāo)。 .setWidth(size) // 寬度。 .setHeight(size); // 高度。 swipeLeftMenu.addMenuItem(addItem); // 添加一個(gè)按鈕到左側(cè)菜單。 SwipeMenuItem deleteItem = new SwipeMenuItem(mContext) .setBackgroundDrawable(R.drawable.selector_red) .setImage(R.mipmap.ic_action_delete) // 圖標(biāo)。 .setText("刪除") // 文字。 .setTextColor(Color.WHITE) // 文字顏色。 .setTextSize(16) // 文字大小。 .setWidth(size) .setHeight(size); swipeRightMenu.addMenuItem(deleteItem);// 添加一個(gè)按鈕到右側(cè)側(cè)菜單。. // 上面的菜單哪邊不要菜單就不要添加。 }};更多使用方法請(qǐng)參考Demo。
第四步,繼承SwipeMenuAdapter,和正常的Adapter一樣使用:
public class MenuAdapter extends SwipeMenuAdapter<MenuAdapter.DefaultViewHolder> { @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) { }}就到這里,更多的細(xì)節(jié),請(qǐng)參考demo和源碼,源碼demo下載傳送門。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注