android 下简单侧滑删除、编辑等功能实现

效果图如下:

侧滑删除

话不多说直接上代码:

第一步:

引入第三方库:

implementation 'com.yanzhenjie.recyclerview:x:1.3.2'

第二步:

在需要添加侧滑布局的地方用SwipeRecyclerView替换RecycleView

<com.yanzhenjie.recyclerview.SwipeRecyclerView
    android:id="@+id/recyclerview"
    android:background="@drawable/shape_common_tophead"
    android:paddingTop="10dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

第三步:

SwipeRecyclerView recyclerview = findViewById(R.id.recyclerview);
recyclerview.setLayoutManager(new LinearLayoutManager(getContext()));
BillSumarryAdapter mAdapter = new BillSumarryAdapter();
mAdapter.setNewInstance(map.get(time));

mAdapter.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
       //TODO点击事件
    }
});

recyclerview.setAdapter(null);
recyclerview.setSwipeMenuCreator(mSwipeMenuCreator);
recyclerview.setOnItemMenuClickListener(new OnItemMenuClickListener() {
    @Override
    public void onItemClick(SwipeMenuBridge menuBridge, int position) {
        // 任何操作必须先关闭菜单,否则可能出现Item菜单打开状态错乱。
        menuBridge.closeMenu();

        // 左侧还是右侧菜单:
        int direction = menuBridge.getDirection();
        // 菜单在Item中的Position:
        int menuPosition = menuBridge.getPosition();

        if (0 == menuPosition) {
            //TODO点击编辑
        } else if (1 == menuPosition) {
             //TODO点击删除
        }

    }
});
recyclerview.setAdapter(mAdapter);
/**
 * 菜单创建器,在Item要创建菜单的时候调用。
 */
private SwipeMenuCreator mSwipeMenuCreator = new SwipeMenuCreator() {
    @Override
    public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int position) {
        int width = getContext().getResources().getDimensionPixelSize(R.dimen.dp_90);

        // 1. MATCH_PARENT 自适应高度,保持和Item一样高;
        // 2. 指定具体的高,比如80;
        // 3. WRAP_CONTENT,自身高度,不推荐;
        int height = ViewGroup.LayoutParams.MATCH_PARENT;

        SwipeMenuItem addItem = new SwipeMenuItem(getContext()).setBackground(R.drawable.shape_editor)
                .setText("编辑")
                .setTextColor(Color.WHITE)
                .setTextSize(14)
                .setWidth(width)
                .setHeight(height);
        swipeRightMenu.addMenuItem(addItem); // 添加菜单到左侧。

        SwipeMenuItem closeItem = new SwipeMenuItem(getContext()).setBackground(R.drawable.shape_rightradius_red)
                .setText("删除")
                .setTextColor(Color.WHITE)
                .setTextSize(14)
                .setWidth(width)
                .setHeight(height);
        swipeRightMenu.addMenuItem(closeItem); // 添加菜单到右侧。
    }
};

注意:如果我们需要设置两个item的上下间距,那么我们不可以在xml布局中去操作,而是需要在代码找哪个操作才能够得到我们想要的效果。

代码如下:

recyclerview2.addItemDecoration(object : ItemDecoration() {
    override fun getItemOffsets(
        outRect: Rect,
        view: View,
        parent: RecyclerView,
        state: RecyclerView.State
    ) {
        super.getItemOffsets(outRect, view, parent, state)
        outRect.top = 10
    }

})

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_41620230

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值