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

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值