上图
image
image
第一步,导入依赖包
·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"
/>
第三步,设置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) {//这个判决解决了每次下拉刷新,重复添加分割线的问题
mSwiperecy.addItemDecoration(defaultItemDecoration);//添加分割线
}
itemDecorationAt = mSwiperecy.getItemDecorationAt(0);
mSwiperecy.setLongPressDragEnabled(true);// 开启长按拖拽
//设置添加侧滑按钮
mSwiperecy.setSwipeMenuCreator(swipeMenuCreator);
//设置滑动菜单item监听
mSwiperecy.setSwipeMenuItemClickListener(mMenuItemClickListener);
list = new ArrayList<>();
adapter = new RecyAdapter(getActivity(), list);
mSwiperecy.setAdapter(adapter);
第三步,创建菜单
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)// 点击的背景。
.setBackground(R.drawable.selector_red)// 点击的背景。
// .setImage(R.mipmap.ic_launcher)// 图标
.setTextColor(Color.WHITE)
.setBackgroundColorResource(R.color.ddd)
.setText(" Delete ") // 文字。
.setWeight(width)// 宽度。
.setHeight(height); // 高度。
swipeLeftMenu.addMenuItem(deleteItem);// 添加菜单到左侧。
//
// 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); // 添加菜单到右侧。
}
};
第四步, 菜单点击监听。
private SwipeMenuItemClickListener mMenuItemClickListener = new SwipeMenuItemClickListener() {
@Override
public void onItemClick(SwipeMenuBridge swipeMenuBridge) {
// 任何操作必须先关闭菜单,否则可能出现Item菜单打开状态错乱。
swipeMenuBridge.closeMenu();
int direction = swipeMenuBridge.getDirection(); // 左侧还是右侧菜单。
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一样使用
网友评论