效果
第一步损趋,導(dǎo)入依賴包
·Gradle
implementation 'com.yanzhenjie:recyclerview-swipe:1.1.4'
第二步,引用自定義View:SwipeMenuRecyclerView
<com.yanzhenjie.recyclerview.swipe.SwipeMenuRecyclerView
android:id="@+id/swiperecy"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
第三步椅寺,設(shè)置adapter(setAdapter 一定要放在最后)
mSwiperecy = (SwipeMenuRecyclerView) inflate.findViewById(R.id.swiperecy);
mSwiperecy.setLayoutManager(new LinearLayoutManager(getActivity()));
DefaultItemDecoration defaultItemDecoration = new DefaultItemDecoration(Color.GRAY);
mSwiperecy.addItemDecoration(defaultItemDecoration);
if (itemDecorationAt == null) {//這個(gè)判決解決了每次下拉刷新浑槽,重復(fù)添加分割線的問題
mSwiperecy.addItemDecoration(defaultItemDecoration);//添加分割線
}
itemDecorationAt = mSwiperecy.getItemDecorationAt(0);
mSwiperecy.setLongPressDragEnabled(true);// 開啟長按拖拽
//設(shè)置添加側(cè)滑按鈕
mSwiperecy.setSwipeMenuCreator(swipeMenuCreator);
//設(shè)置滑動(dòng)菜單item監(jiān)聽
mSwiperecy.setSwipeMenuItemClickListener(mMenuItemClickListener);
list = new ArrayList<>();
adapter = new RecyAdapter(getActivity(), list);
mSwiperecy.setAdapter(adapter);
第三步,創(chuàng)建菜單
private SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
int height = ViewGroup.LayoutParams.MATCH_PARENT;
int width = getResources().getDimensionPixelSize(R.dimen.dp_70);
SwipeMenuItem deleteItem = new SwipeMenuItem(getActivity())
// .setBackgroundDrawable(R.drawable.selector_green)// 點(diǎn)擊的背景桐玻。
.setBackground(R.drawable.selector_red)// 點(diǎn)擊的背景溉旋。
// .setImage(R.mipmap.ic_launcher)// 圖標(biāo)
.setTextColor(Color.WHITE)
.setBackgroundColorResource(R.color.ddd)
.setText(" Delete ") // 文字观腊。
.setWeight(width)// 寬度算行。
.setHeight(height); // 高度。
swipeLeftMenu.addMenuItem(deleteItem);// 添加菜單到左側(cè)儡陨。
//
// SwipeMenuItem completeItem = new SwipeMenuItem(getActivity())
// .setBackground(R.drawable.selector_red)
//// .setImage(R.mipmap.ic_launcher)
// .setTextColor(Color.WHITE)
// .setBackgroundColorResource(R.color.ddd)
// .setText(" 完成")
// .setWeight(width)
// .setHeight(height);
// swipeRightMenu.addMenuItem(completeItem); // 添加菜單到右側(cè)。
}
};
第四步, 菜單點(diǎn)擊監(jiān)聽骗村。
private SwipeMenuItemClickListener mMenuItemClickListener = new SwipeMenuItemClickListener() {
@Override
public void onItemClick(SwipeMenuBridge swipeMenuBridge) {
// 任何操作必須先關(guān)閉菜單,否則可能出現(xiàn)Item菜單打開狀態(tài)錯(cuò)亂笼痛。
swipeMenuBridge.closeMenu();
int direction = swipeMenuBridge.getDirection(); // 左側(cè)還是右側(cè)菜單琅拌。
final int adapterPosition = swipeMenuBridge.getAdapterPosition(); // RecyclerView的Item的position。
int menuPosition = swipeMenuBridge.getPosition(); // 菜單在RecyclerView的Item中的Position刻坊。
switch (menuPosition) {
case 0:
// 刪除
list.remove(adapterPosition);
adapter.notifyDataSetChanged();
break;
}
}
};
注意,adapter里繼承SwipeMenuRecyclerView谭胚,和正常的Adapter一樣使用:
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者