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

  • 相关阅读:
    计算机毕业设计SSM电商后台系统【附源码数据库】
    Windows环境部署Hadoop-3.3.2和Spark3.3.2
    ubuntu 校验 .desktop文件
    蔚小理处境越发尴尬了?
    vue实现循环发起多个异步请求——Promise.all()与Promise.race()
    【LeetCode】2022 7月 每日一题
    代码随想录Day18 LeetCode235 二叉搜索树的公共祖先 T701二叉搜索树中的插入操作 T140 删除二叉搜索树中的公共节点
    面试精选:3、史上最详细的Linux精选面试题(二)
    初识MongoDB及安装
    分布式追踪与监控:Skywalking
  • 原文地址:https://blog.csdn.net/qq_41620230/article/details/126643889