第三方开源库:ListView相关:滑动删除

来源:互联网 发布:手写文字图片制作软件 编辑:程序博客网 时间:2024/05/30 20:08

SwipeMenuListView

github:https://github.com/baoyongzhang/SwipeMenuListView

效果图

这里写图片描述

gradle

dependencies {    ...    compile 'com.baoyz.swipemenulistview:library:1.3.0'}

xml

<com.baoyz.swipemenulistview.SwipeMenuListView    android:id="@+id/swipeMenuListView"    android:layout_width="match_parent"    android:layout_height="match_parent"/>

步骤

  • 创建SwipeMenuCreator,并给ListView设置
  • 给menu的item设置点击事件

先个SwipeMenuListView设置adapter

listView = (SwipeMenuListView) findViewById(R.id.swipeMenuListView);MyAdapter adapter = new MyAdapter();listView.setAdapter(adapter);

创建SwipeMenuCreator,并给ListView设置

注意:item的必须设置宽度和文字大小,否则看不到。
不设置宽度,那么宽度是0;不设置文字大小,那么看不到文字。

SwipeMenuCreator creator = new SwipeMenuCreator() {    @Override    public void create(SwipeMenu menu) {        SwipeMenuItem item = new SwipeMenuItem(getApplicationContext());        item.setTitle("收藏");        item.setTitleSize(20);//必须设置        item.setTitleColor(Color.RED);        item.setBackground(R.color.colorPrimary);        item.setWidth(100);//必须设置        menu.addMenuItem(item);        SwipeMenuItem item2 = new SwipeMenuItem(getApplicationContext());        item2.setTitle("删除");        item2.setTitleColor(Color.RED);        item2.setTitleSize(18);        item2.setBackground(R.color.colorPrimary);        item2.setWidth(120);        item2.setIcon(R.mipmap.ic_launcher_round);        menu.addMenuItem(item2);    }};listView.setMenuCreator(creator);

给每个item设置点击事件

return的返回值:点击menuItem后menu是否dismiss。true: 不消失,false:消失。
position就是adapter中的position,index是menuItem的索引,从0开始

listView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {    @Override    public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {        Log.d(TAG, position + "****" + index);//position就是adapter中的position,index是menuItem的索引,从0开始        switch (index) {            case 0:                Toast.makeText(context, "收藏", Toast.LENGTH_SHORT).show();                break;            case 1:                Toast.makeText(context, "删除", Toast.LENGTH_SHORT).show();                break;        }        //position=5时,点击menuItem后menu没有消失        if (position == 5) {            return true;        }        return false;//点击menuItem后menu是否dismiss。true: 不消失,false:消失    }});

其他方法

设置打开menu的动画

listView.setCloseInterpolator(new BounceInterpolator());listView.setOpenInterpolator(new BounceInterpolator());

设置menu在那一边

listView.setSwipeDirection(SwipeMenuListView.DIRECTION_LEFT);//向左滑,menu在右边

menu打开后关闭时调用的方法

listView.setOnMenuStateChangeListener(new SwipeMenuListView.OnMenuStateChangeListener() {    @Override    public void onMenuOpen(int position) {        Toast.makeText(context, "Menu打开了", Toast.LENGTH_SHORT).show();    }    @Override    public void onMenuClose(int position) {        Toast.makeText(context, "Menu关闭了", Toast.LENGTH_SHORT).show();    }});

Demo: http://git.oschina.net/libraryDemo/swipemenulistview01

原创粉丝点击