先放上GitHub地址:https://github.com/yanzhenjie/SwipeRecyclerView
效果图就不放了,跟iOS微信的侧滑是类似的效果,可以自定义样式。
如何使用:
如果你使用的是android support库,那么请添加下述依赖:
implementation 'com.yanzhenjie.recyclerview:support:1.3.2'
如果你使用的是android x库,那么请添加下述依赖:
implementation 'com.yanzhenjie.recyclerview:x:1.3.2'
导入完依赖后将 recyclerview 换为:SwipeRecyclerView
用法跟普通的 recyclerview 是一样的,activity:
// 添加菜单
recyclerMyLiveList.setSwipeMenuCreator(swipeMenuCreator);
// 菜单点击监听。
recyclerMyLiveList.setOnItemMenuClickListener(mItemMenuClickListener);
recyclerMyLiveList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
adapter = new MyLiveListAdapter(this);
recyclerMyLiveList.setAdapter(adapter);
// 设置菜单监听器。
SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {
// 创建菜单:
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
int width = getResources().getDimensionPixelSize(R.dimen.dp_70);
int height = ViewGroup.LayoutParams.MATCH_PARENT;
SwipeMenuItem deleteItem = new SwipeMenuItem(PlayBackMyLiveListActivity.this)
.setBackground(R.drawable.red_bg)
//.setImage(R.mipmap.delete)
.setTextColor(Color.WHITE)
.setText(R.string.delete)
.setTextSize(15)
.setWidth(width)
.setHeight(height);
swipeRightMenu.addMenuItem(deleteItem);
}
};
// 侧滑的点击事件
OnItemMenuClickListener mItemMenuClickListener = new OnItemMenuClickListener() {
@Override
public void onItemClick(SwipeMenuBridge menuBridge, int position) {
// 任何操作必须先关闭菜单,否则可能出现Item菜单打开状态错乱。
menuBridge.closeMenu();
// 左侧还是右侧菜单:
int direction = menuBridge.getDirection();
// 菜单在Item中的Position:
int menuPosition = menuBridge.getPosition();
// 调用删除接口
presenter.DELETE_LIVE(token,data.get(position).getLive_ID());
adapter.removeDataAt(position);
}
};
删除后你可能会遇到数据不刷新的问题,解决方法:
在adapter手动添加:
public void removeDataAt(int position) {
list.remove(position);
notifyItemRemoved(position);
}
在调用完删除接口后就可以调用 adapter 的 removeDataAt 方法,那么问题就解决了~