Java源码示例:com.yanzhenjie.recyclerview.swipe.SwipeMenuItem

示例1
@Override
        public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
            int width = getResources().getDimensionPixelSize(R.dimen.item_height);

            // MATCH_PARENT 自适应高度,保持和内容一样高;也可以指定菜单具体高度,也可以用WRAP_CONTENT。
            int height = ViewGroup.LayoutParams.MATCH_PARENT;

            // 添加右侧的,如果不添加,则右侧不会出现菜单。
            {
                SwipeMenuItem deleteItem = new SwipeMenuItem(mContext)
//                        .setBackgroundDrawable(R.drawable.selector_red)
//                        .setImage(R.mipmap.ic_action_delete)
                        .setBackgroundColor(Color.parseColor("#ff6e40")).setText(getString(R.string.delete)) // 文字,还可以设置文字颜色,大小等。。
                        .setTextColor(Color.WHITE).setWidth(width).setHeight(height);
                swipeRightMenu.addMenuItem(deleteItem);// 添加一个按钮到右侧侧菜单。

                SwipeMenuItem addItem = new SwipeMenuItem(mContext)
//                        .setBackgroundDrawable(R.drawable.selector_green)
                        .setBackgroundColor(Color.parseColor("#5af158")).setText(getString(R.string.edit)).setTextColor(Color.WHITE).setWidth(width).setHeight(height);
                swipeRightMenu.addMenuItem(addItem); // 添加一个按钮到右侧菜单。
            }
        }
 
示例2
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
    int width = getResources().getDimensionPixelSize(R.dimen.dp_70);

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

    SwipeMenuItem addItem = new SwipeMenuItem(getContext())
            .setBackground(R.drawable.selector_green)
            .setImage(R.mipmap.ic_action_add)
            .setWidth(width)
            .setHeight(height);
    swipeLeftMenu.addMenuItem(addItem); // 添加菜单到左侧。

    SwipeMenuItem closeItem = new SwipeMenuItem(getContext())
            .setBackground(R.drawable.selector_green)
            .setImage(R.mipmap.ic_action_close)
            .setWidth(width)
            .setHeight(height);
    swipeRightMenu.addMenuItem(closeItem); // 添加菜单到右侧。
}
 
示例3
private void initView() {
    swiperefreshlayout.setColorSchemeColors(getResources().getColor(R.color.red_normal),
            getResources().getColor(R.color.green_normal),
            getResources().getColor(R.color.purple_normal));
    swiperefreshlayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            int nextInt = new Random().nextInt(10);
            homePresenter.getMeiziData(nextInt,20);
        }
    });
    swipeMenuRecyclerView.setLayoutManager(new GridLayoutManager(activity, 2));
    SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {

        @Override
        public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
            swipeRightMenu.setOrientation(SwipeMenu.VERTICAL);
            SwipeMenuItem swipeMenuItem = new SwipeMenuItem(activity)
                    .setBackgroundColor(R.color.colorPrimary)
                    .setImage(android.R.drawable.btn_star_big_off)
                    .setText("收藏")
                    .setTextColor(Color.WHITE)
                    .setWidth(100)
                    .setHeight(0)
                    .setWeight(1);
            swipeRightMenu.addMenuItem(swipeMenuItem);
        }
    };
    ArrayList<String> mDataList = new ArrayList<>();
    for (int i = 0; i < 30; i++) {
        mDataList.add("我是第" + i + "个菜单");
    }

    MenuVerticalAdapter menuVerticalAdapter = new MenuVerticalAdapter(mDataList);
    menuVerticalAdapter.setOnItemClickListener(onItemClickListener);

    swipeMenuRecyclerView.setSwipeMenuCreator(swipeMenuCreator);
    swipeMenuRecyclerView.setSwipeMenuItemClickListener(menuItemClickListener);
}
 
示例4
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
    if (viewType == GroupAdapter.VIEW_TYPE_NON_STICKY) {
        int width = getResources().getDimensionPixelSize(R.dimen.dp_70);

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

        SwipeMenuItem closeItem = new SwipeMenuItem(MenuActivity.this)
                .setBackground(R.drawable.selector_purple)
                .setImage(R.mipmap.ic_action_close)
                .setWidth(width)
                .setHeight(height);
        swipeLeftMenu.addMenuItem(closeItem); // 添加菜单到左侧。
        swipeRightMenu.addMenuItem(closeItem); // 添加菜单到右侧。

        SwipeMenuItem addItem = new SwipeMenuItem(MenuActivity.this)
                .setBackground(R.drawable.selector_green)
                .setText("添加")
                .setTextColor(Color.WHITE)
                .setWidth(width)
                .setHeight(height);
        swipeLeftMenu.addMenuItem(addItem); // 添加菜单到左侧。
        swipeRightMenu.addMenuItem(addItem); // 添加菜单到右侧。
    }
}
 
示例5
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
    int width = getResources().getDimensionPixelSize(R.dimen.dp_70);

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

    // 因为左边要DrawerLayout的侧滑,所以不添加左侧菜单,添加后DrawerLayout将滑不动,但是菜单可以滑动。

    // 只添加Item右侧的菜单。
    {
        SwipeMenuItem closeItem = new SwipeMenuItem(DrawerActivity.this)
                .setBackground(R.drawable.selector_purple)
                .setImage(R.mipmap.ic_action_close)
                .setWidth(width)
                .setHeight(height);
        swipeRightMenu.addMenuItem(closeItem); // 添加菜单到左侧。

        SwipeMenuItem addItem = new SwipeMenuItem(DrawerActivity.this)
                .setBackground(R.drawable.selector_green)
                .setText("添加")
                .setTextColor(Color.WHITE)
                .setWidth(width)
                .setHeight(height);
        swipeRightMenu.addMenuItem(addItem); // 添加菜单到左侧。
    }
}
 
示例6
/**
 * swipeRecycleView处理
 */
private void showSwipeRecycleView() {
    //初始化自定义诗词列表
    poetryDbList = LitePal.findAll(PoetryDb.class);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    ownPoetryAdapter = new OwnPoetryAdapter(poetryDbList);

    //获取手机屏幕高度
    DisplayMetrics dm = getResources().getDisplayMetrics();
    int width = dm.widthPixels;
    recyclerView.addItemDecoration(new DefaultItemDecoration(getResources().getColor(R.color.gray),width,1));
    //滑动菜单
    SwipeMenuCreator mSwipeMenuCreator = new SwipeMenuCreator() {
        @Override
        public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
            int height = ViewGroup.LayoutParams.MATCH_PARENT;
            SwipeMenuItem editItem = new SwipeMenuItem(PoetryActivity.this)
                    .setText("编辑")
                    .setWidth(200)
                    .setHeight(height)
                    .setTextSize(16)
                    .setBackground(R.color.bluishWhite);
            SwipeMenuItem deleteItem = new SwipeMenuItem(PoetryActivity.this)
                    .setText("删除")
                    .setTextColorResource(R.color.qmui_config_color_white)
                    .setWidth(200)
                    .setHeight(height)
                    .setTextSize(16)
                    .setBackground(R.color.qmui_config_color_red);
            swipeLeftMenu.addMenuItem(editItem);
            swipeRightMenu.addMenuItem(deleteItem);
        }
    };
    //设置监听
    SwipeMenuItemClickListener mMenuItemClickListener = new SwipeMenuItemClickListener() {
        @Override
        public void onItemClick(SwipeMenuBridge menuBridge) {
            menuBridge.closeMenu();
            // 左侧还是右侧菜单。
            int direction = menuBridge.getDirection();
            // RecyclerView的Item的position。
            int adapterPosition = menuBridge.getAdapterPosition();
            // 菜单在RecyclerView的Item中的Position。
            int menuPosition = menuBridge.getPosition();
            Log.d(TAG, "onItemClick: 位置"+adapterPosition);
            if (direction == SwipeMenuRecyclerView.LEFT_DIRECTION) {
                Intent intent = new Intent(PoetryActivity.this, AddAndEditPoetryActivity.class);
                intent.putExtra("addOrEdit","edit");
                int editId = poetryDbList.get(adapterPosition).getPoetryDb_id();
                intent.putExtra("editId",editId+"");
                startActivity(intent);
            } else if (direction == SwipeMenuRecyclerView.RIGHT_DIRECTION) {
                final boolean[] isCancle = {false};
                Handler handler = new Handler();
                Snackbar.make(recyclerView,"正在删除该条诗词数据",Snackbar.LENGTH_SHORT)
                        .setAction("取消", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                isCancle[0] = true;
                                Toast.makeText(PoetryActivity.this,"已取消删除",Toast.LENGTH_SHORT).show();
                            }
                        }).show();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        if (!isCancle[0]) {
                            int deleteId = poetryDbList.get(adapterPosition).getPoetryDb_id();
                            LitePal.deleteAll(PoetryDb.class, "poetryDb_id = ?", String.valueOf(deleteId));
                            poetryDbList.remove(adapterPosition);
                            ownPoetryAdapter.notifyItemRemoved(adapterPosition);
                        }
                    }
                },1800);

            }

        }
    };
    recyclerView.setSwipeMenuCreator(mSwipeMenuCreator);
    recyclerView.setSwipeMenuItemClickListener(mMenuItemClickListener);
    recyclerView.setAdapter(ownPoetryAdapter);
}