仿QQ左滑删除SwipeMenuRecyclerView

作者: i小灰 | 来源:发表于2020-09-13 23:05 被阅读0次

    上图

    image image

    第一步,导入依赖包

    ·Gradle

      implementation 'com.yanzhenjie:recyclerview-swipe:1.1.4'
    
    

    第二步,引用自定义View:SwipeMenuRecyclerView

      <com.yanzhenjie.recyclerview.swipe.SwipeMenuRecyclerView
          android:id="@+id/swiperecy"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          app:layout_behavior="@string/appbar_scrolling_view_behavior"
          />
    
    

    第三步,设置adapter(setAdapter 一定要放在最后)

      mSwiperecy = (SwipeMenuRecyclerView) inflate.findViewById(R.id.swiperecy);
      mSwiperecy.setLayoutManager(new LinearLayoutManager(getActivity()));
      DefaultItemDecoration defaultItemDecoration = new DefaultItemDecoration(Color.GRAY);
      mSwiperecy.addItemDecoration(defaultItemDecoration);
         if (itemDecorationAt == null) {//这个判决解决了每次下拉刷新,重复添加分割线的问题
                mSwiperecy.addItemDecoration(defaultItemDecoration);//添加分割线
            }
            itemDecorationAt = mSwiperecy.getItemDecorationAt(0);
            mSwiperecy.setLongPressDragEnabled(true);// 开启长按拖拽
            //设置添加侧滑按钮
            mSwiperecy.setSwipeMenuCreator(swipeMenuCreator);
            //设置滑动菜单item监听
            mSwiperecy.setSwipeMenuItemClickListener(mMenuItemClickListener);
            list = new ArrayList<>();
            adapter = new RecyAdapter(getActivity(), list);
            mSwiperecy.setAdapter(adapter);
    
    

    第三步,创建菜单

     private SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {
    
            @Override
            public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
                int height = ViewGroup.LayoutParams.MATCH_PARENT;
                int width = getResources().getDimensionPixelSize(R.dimen.dp_70);
                SwipeMenuItem deleteItem = new SwipeMenuItem(getActivity())
    //                    .setBackgroundDrawable(R.drawable.selector_green)// 点击的背景。
                        .setBackground(R.drawable.selector_red)// 点击的背景。
    //                    .setImage(R.mipmap.ic_launcher)// 图标
                        .setTextColor(Color.WHITE)
                        .setBackgroundColorResource(R.color.ddd)
                        .setText("    Delete    ") // 文字。
                        .setWeight(width)// 宽度。
                        .setHeight(height); // 高度。
                swipeLeftMenu.addMenuItem(deleteItem);// 添加菜单到左侧。
    
    //
    //            SwipeMenuItem completeItem = new SwipeMenuItem(getActivity())
    //                    .setBackground(R.drawable.selector_red)
    ////                    .setImage(R.mipmap.ic_launcher)
    //                    .setTextColor(Color.WHITE)
    //                    .setBackgroundColorResource(R.color.ddd)
    //                    .setText("  完成")
    //                    .setWeight(width)
    //                    .setHeight(height);
    //            swipeRightMenu.addMenuItem(completeItem); // 添加菜单到右侧。
    
            }
        };
    
    

    第四步, 菜单点击监听。

       private SwipeMenuItemClickListener mMenuItemClickListener = new SwipeMenuItemClickListener() {
           @Override
           public void onItemClick(SwipeMenuBridge swipeMenuBridge) {
               // 任何操作必须先关闭菜单,否则可能出现Item菜单打开状态错乱。
               swipeMenuBridge.closeMenu();
               int direction = swipeMenuBridge.getDirection(); // 左侧还是右侧菜单。
               final int adapterPosition = swipeMenuBridge.getAdapterPosition(); // RecyclerView的Item的position。
               int menuPosition = swipeMenuBridge.getPosition(); // 菜单在RecyclerView的Item中的Position。
               switch (menuPosition) {
                   case 0:
                       //  删除
                       list.remove(adapterPosition);
                       adapter.notifyDataSetChanged();
                       break;
    
               }
           }
       };
    
    
    注意,adapter里继承SwipeMenuRecyclerView,和正常的Adapter一样使用

    相关文章

      网友评论

        本文标题:仿QQ左滑删除SwipeMenuRecyclerView

        本文链接:https://www.haomeiwen.com/subject/krufektx.html