美文网首页
Android 带侧滑删除的Recycleview

Android 带侧滑删除的Recycleview

作者: 鹅鹅鹅曲项向天歌呀 | 来源:发表于2018-11-30 17:17 被阅读0次

https://github.com/yanzhenjie/SwipeRecyclerView
我用的是侧滑功能哦,其他的没用,所有我展示的也是侧滑的功能,其他的详情功能去github上找吧,挺详细的。
使用方法:

依赖:

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

界面展示:


1.png 2.png

解决问题:
我做的功能是,侧滑可以删除,编辑也可以删除。
但是在编辑的时候,要禁止recycleview滑动删除,在侧滑的时候,点击编辑(图中被我点完了,变成完成了,删除完了就是编辑了),要关闭侧滑。
显然源码上,只添加了可是删除的功能,没有禁止滑动删除的功能,这个要自己来判断咯。
重写recycleview,判断一下是否在编辑状态,拦截一下手势功能,具体代码里都有写哦。直接用也可以,在封装一下也可以。
代码实现:
CollectionRecyclerView .java(重写的recycleview)

public class CollectionRecyclerView extends SwipeMenuRecyclerView {

    /**
     * 是否为编辑状态,如果为编辑状态则所有的List触摸失效
     */
    private boolean canEditState = false;

    private GestureDetector mGestureDetector;

    public CollectionRecyclerView(Context context) {
        super(context);
        initGestureDetector();
    }

    public CollectionRecyclerView(Context context, AttributeSet attrs) {
        super(context, attrs);
        initGestureDetector();
    }

    public CollectionRecyclerView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initGestureDetector();
    }

    private void initGestureDetector() {
        mGestureDetector = new GestureDetector(new GestureDetector.OnGestureListener() {
            @Override
            public boolean onDown(MotionEvent e) {
                return false;
            }

            @Override
            public void onShowPress(MotionEvent e) {

            }

            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return false;
            }

            @Override
            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
                int x1 = (int) e1.getX();
                int x2 = (int) e2.getX();
                if (x1 - x2 > 10 || x2 - x1 > 10) {
                    return canEditState;
                } else {
                    return false;
                }
            }

            @Override
            public void onLongPress(MotionEvent e) {

            }

            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                return false;
            }
        });
    }

    /**
     * 停用滑动菜单
     */
    public void stopSlideMenu() {
        canEditState = true;

    }


    /**
     * 启动滑动菜单
     */
    public void openSlideMenu() {
        canEditState = false;
    }


    public void closeMenu() {
        if (mOldSwipedLayout != null && mOldSwipedLayout.isMenuOpen()) {
            mOldSwipedLayout.smoothCloseMenu();
        }
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent e) {
        if (mGestureDetector.onTouchEvent(e)) {
            return true;
        } else {
            return super.onInterceptTouchEvent(e);
        }
    }
}

相关文章

网友评论

      本文标题:Android 带侧滑删除的Recycleview

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