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


    效果图如下:

    侧滑删除

    话不多说直接上代码:

    第一步:

    引入第三方库:

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

    第二步:

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

    第三步:

    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
        }
    
    })

  • 相关阅读:
    电脑系统重装后如何开启Win11实时辅助字幕
    计算机毕业设计springboot基于springboot的游戏交易网络无忧3op09源码+系统+程序+lw文档+部署
    快应用(安卓)keystore 获得应用签名详细流程
    Selenium自动化测试 —— 通过cookie绕过验证码的操作!
    运维开发详解:现代IT环境的核心角色
    安利2款好用的笔记软件给你们
    季铵盐离子液体4-(苯甲酸)三乙胺溴(QAIL)固载金属-有机骨架材料MIL-101(科研)
    如何录制视频?有了这款视频录制软件,粉丝多了,转发量也起来了
    计算机毕业设计springboot+vue基本微信小程序的码高教育课后在线小程序
    Mycat+分库分表
  • 原文地址:https://blog.csdn.net/qq_41620230/article/details/126643889