Giter Club home page Giter Club logo

mcxtzhang / swipedelmenulayout Goto Github PK

View Code? Open in Web Editor NEW
3.7K 59.0 631.0 5.53 MB

The most simple SwipeMenu in the history, 0 coupling, support any ViewGroup. Step integration swipe (delete) menu, high imitation QQ, iOS. ~史上最简单侧滑菜单,0耦合,支持任意ViewGroup。一步集成侧滑(删除)菜单,高仿QQ、IOS。~

Home Page: http://blog.csdn.net/zxt0601/article/details/52303781

License: Apache License 2.0

Java 100.00%
sideslip-menu slide recyclerview listview viewgroup

swipedelmenulayout's People

Contributors

mcxtzhang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

swipedelmenulayout's Issues

删除数据后,位置错乱问题。

image
为什么Demo中recycleView删除一项数据后,没有调用adapter().notifyItemRangeChanged(position, dataList.size() - position);位置不会错乱。

发现一个bug,这里面的重庆会变Pinyin变成zhongqing

修改方法:导入
compile 'com.github.promeg:tinypinyin-lexicons-android-cncity:2.0.2' // 可选,适用于Android的**地区词典
然后在初始化一下,Pinyin.init(Pinyin.newConfig().with(CnCityDict.getInstance(context)));
里面的context请根据你的项目传入就好了,

博主应该改一下,这个是在你底层里面有问题的

关于demo里面的一些小错误

FullDelDemoActivity里面的错误:CstSwipeDelMenu这个类根本找不到
//且如果想让侧滑菜单同时关闭,需要同时调用 ((CstSwipeDelMenu) holder.itemView).quickClose();
正确的应该是:
//且如果想让侧滑菜单同时关闭,需要同时调用 ((SwipeMenuLayout) holder.itemView).quickClose();

ListViewDelDemoActivity里面的错误:CstSwipeDelMenu这个类根本找不到
//((CstSwipeDelMenu)holder.getConvertView()).setIos(false);//这句话关掉IOS阻塞式交互效果
正确的应该是:
//((SwipeMenuLayout)holder.getConvertView()).setIos(false);//这句话关掉IOS阻塞式交互效果

建议楼主 增加源码打包

在 lib下的build.gradle 文件下增加如下代码,可在构建jar的时候另外构建一个source.jar,方便引用项目时候查看源码,这也是开发第三方库的技巧吧。

// 打包源码jar
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

task javadoc(type: Javadoc) {
    failOnError  false
    source = android.sourceSets.main.java.sourceFiles
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    classpath += configurations.compile
}

// 打包文档jar
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives sourcesJar
    archives javadocJar
}

Tips: 该项目非常好,赞一个!!!!!零耦合,刚好适用。

RecyclerView遇到的问题

实现一个效果,点击一个按钮后,所有的item要全部左滑,然后我在Adapter的onBindView里面这么写的:

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

        ApplyListItem item = list.get(position);
        holder.tvItemDate.setText(item.getBusinessDate());
        holder.tvItemName.setText(item.getItemPartName());
        holder.tvItemState.setText(item.getSTType());
        holder.llContent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mContext, ApplyStateActivity.class);
                mContext.startActivity(intent);
            }
        });
        //这边用来判断状态是要不要左滑出来
        if (isEdit){
            holder.swipeMenuLayout.smoothExpand();
            holder.swipeMenuLayout.setSwipeEnable(false);
        }else {
            holder.swipeMenuLayout.smoothClose();
            holder.swipeMenuLayout.setSwipeEnable(true);
        }

    }

出现下面的效果:

wechatimg485

但是只有前面5个左滑成功,后面有6个item没有左滑,接下去全都是正确的,然后要重新上下滑动才会有左滑效果出来。

LinearLayoutDelDemoActivity的小错误

LinearLayoutDelDemoActivity有个小失误
LinearLayout llContent2 = (LinearLayout) findViewById(R.id.llContent);
正确的应该是:
LinearLayout llContent2 = (LinearLayout) findViewById(R.id.llContent2);

请博主更正

控件滑动跟点击有冲突

1、控件没有左滑的时候,不能点击;
2、滑动某一个item时,去滑动另一个item,侧滑菜单不能自动关闭,而且变成点击事件。

ArrayIndexOutOfBoundsException

java.lang.ArrayIndexOutOfBoundsException: length=27; index=-1
at java.util.ArrayList.get(ArrayList.java:310)
at mcxtzhang.swipedelmenu.FullDemo.FullDelDemoActivity$1.onTop(FullDelDemoActivity.java:55)
at mcxtzhang.swipedelmenu.FullDemo.FullDelDemoAdapter$4.onClick(FullDelDemoAdapter.java:85)
at android.view.View.performClick(View.java:4811)
at android.view.View$PerformClick.run(View.java:20136)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5549)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)

内存泄漏

mViewCache 保存view会导致内存泄漏,好像改成弱引用好一些

item中包含checkbox时的事件问题

item布局中,包含1个checkbox,就是listview列表长按item时,显示chenbox,进行多选,同时,将每个item的滑动开关设为false,当业务操作完,回复当初可滑动的布局后,即,滑动开关设为true,同时将checkbox隐藏等处理,这时发现,item内的content绑定的点击事件均失效,反而是原先listview的点击事件却开始响应了,同时,item无法滑动,如何处理这个事件拦截呢,让恢复到content响应事件,同时滑动可以继续呢

ExpandableListView的bug

您好,我在ExpandableListView里面用了1.2.5的库,发现侧滑了第一个group里面的子item后,还可以点击第一个group,第一个group的相应屏幕位置item也变为侧滑。也可以同时侧滑不同group里面的子item。会不会侧滑某个group里面的子item后,点击外面就回弹好点。

长按事件与侧滑冲突

侧滑删除菜单显示时,长按仍会触发长按事件,代码中重写的展开时禁止长按的performLongClick()方法并没有执行啊,怎么解决啊?

关于notifyDataSetChanged

我现在遇到一个问题就是侧滑删除一个item后,我用的是notifyDataSetChanged,会出现某个item闪现一下侧滑按钮

滑动冲突

我用 一个滑动的控件(utr,下拉刷新的view)包裹了recyclerview 这样在使用您的swipeMenuLayout的时候左滑和上下滑动会冲突,体验很差,请问如何解决

点击SwipeEnable为false的那一行无法关闭已打开的菜单

假如有三行,第一行和第二行是有左滑菜单的,第三行SwipeEnable为false
测试步骤:

  1. 滑开第一行的菜单,点击第二行时第一行菜单可以正常关闭
  2. 滑开第一行的菜单,点击第三行时第一行菜单没有关闭,而整行内容的点击事件回调了
  3. 滑开第一行的菜单,按住第三行可以拖动列表

这里我希望的是点第三行也关闭第一行的菜单,不知道是我使用的姿势不对还是什么,请作者百忙这中抽空看看。

当有菜单打开时,依旧可以触发下拉刷新

  • 我的的列表是用Recyclerview实现的.
  • item最外层是一个LinearLayout(Vertical),里边是一个SwipeMenuLayout和分割线view。
  • 当有菜单打开时,手指放到其他item上,下滑,此时会触发下拉刷新,打开的菜单也会自动关闭(不是期望的,期望不会触发下拉刷新)
  • 当有菜单打开时,手指放到该item上,下滑,此时不会触发下拉刷新,item也不会关闭,然后手指放到其他item上滑动 ,不会触发下拉刷新,被打开的菜单也会关闭(与期望相同)

有提供设置灵敏度的api吗?

实际使用中,感觉滚动太灵敏了,轻微的点击,就会触发左滑,能不能忽略 down事件和up事件小于指定像素, 不触发左滑

RecyclerView 在 ViewPager 中的滑动冲突

情形描述:
我的界面要求是有一个ViewPager,里面有左右两个Fragment,在左Fragment里面的RecyclerView需要右滑删除操作。

遇到的问题是:切换ViewPager Fragment和进行滑动删除的操作都是用户手指按下,由右边向左边滑动,然后就冲突了。基本上都是触发滑动删除操作,ViewPager 切换Fragment则比较困难。

我想是不是给滑动删除提供一个触发边缘范围会比较好,比如如果是右滑删除,只有手指在SwipeDelMenuLayout的右边一定边缘范围内才会触发,否则不做任何操作。

拖拽滑动

将该控件和dragsortlistview 结合使用之后,list view 不能拖动了,触摸事件应该怎么处理呢?

setSwipeEnable问题

在adapter里的getView,swipecellcontact.setSwipeEnable(false);或是true,前几行都无效,奇怪

在什么地方处理菜单item的点击事件?

你好,我运行你的代码后,点击删除按钮没有删除效果、连点击事件没有响应。请问:当侧滑菜单滑出以后,在什么地方处理菜单item的点击事件?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.