第 1 步 添加依赖
compile 'com.yanzhenjie:recyclerview-swipe:1.0.3'
第二步 引用自定义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" />
第三步
public class SwipeMenuRecyclerViewActivity extends BaseActivity {
Context mContext;
//
@BindView(R.id.recycler_view)
SwipeMenuRecyclerView recyclerView;
BaseQuickAdapter<String, BaseViewHolder> adapter;
@Override
protected void initView() {
mContext = this;
initAdapter();
}
private void initAdapter() {
List<String> list = new ArrayList();
for (int i = 0; i < 10; i++) {
list.add(i + "#item");
}
adapter = new BaseQuickAdapter<String, BaseViewHolder>(R.layout.swipe_item2, list) {
@Override
protected void convert(BaseViewHolder helper, String item) {
helper.setText(R.id.tv_1,item);
}
};
initSwipe();
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
}
private void initSwipe() {
// 创建菜单:
SwipeMenuCreator mSwipeMenuCreator = new SwipeMenuCreator() {
@Override
public void onCreateMenu(SwipeMenu leftMenu, SwipeMenu rightMenu, int viewType) {
int width = 200;
int height = ViewGroup.LayoutParams.MATCH_PARENT;
// 注意:哪边不想要菜单,那么不要添加即可。
SwipeMenuItem addItem = new SwipeMenuItem(mContext)
.setBackground(R.color.main)
// .setImage(R.mipmap.ic_action_delete)
.setText("添加")
.setTextColor(Color.WHITE)
.setWidth(width)
.setHeight(height);
rightMenu.addMenuItem(addItem); // 添加菜单到右侧。
}
};
// 设置监听器。
recyclerView.setSwipeMenuCreator(mSwipeMenuCreator);
SwipeMenuItemClickListener mMenuItemClickListener = new SwipeMenuItemClickListener() {
@Override
public void onItemClick(SwipeMenuBridge menuBridge) {
// 任何操作必须先关闭菜单,否则可能出现Item菜单打开状态错乱。
menuBridge.closeMenu();
int direction = menuBridge.getDirection(); // 左侧还是右侧菜单。
int adapterPosition = menuBridge.getAdapterPosition(); // RecyclerView的Item的position。
int menuPosition = menuBridge.getPosition(); // 菜单在RecyclerView的Item中的Position。
Toast.makeText(mContext, direction + " " + adapterPosition + " " + menuPosition, Toast.LENGTH_SHORT).show();
removeItem(adapterPosition);
}
};
// 菜单点击监听。
recyclerView.setSwipeMenuItemClickListener(mMenuItemClickListener);
}
private void removeItem(int position) {
adapter.remove(position);
}
@Override
protected int layoutId() {
return R.layout.recyclerview_swipemenu;
}
}
最后简单的SwipeMenuRecyclerView就实现了
|