ListView侧滑菜单SwipeMenuListView的简单使用

第三方开源项目SwipeMenuListView

github上的链接地址是:https://github.com/baoyongzhang/SwipeMenuListView

依赖:

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

ps:我导入最新的Studio报错,不知道什么情况

那就只好导入源文件了

将library/ src/main/java/com/ baoyz/ swipemenulistview目录下的所有源代码文件放入自己的项目代码包中即可使用,源代码文件和包结构如图所示:

使用非常简单:

XML布局文件里直接调用

<com.guorentong.learn.listviewcehua.swipemenulistview.SwipeMenuListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

代码实现:

public class MainActivity extends AppCompatActivity {
    private Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context=this;
        setContentView(R.layout.activity_main);
        //初始化
        SwipeMenuCreator creator = new SwipeMenuCreator() {
            @Override
            public void create(SwipeMenu menu) {
                SwipeMenuItem openItem = new SwipeMenuItem(context);
                //设置背景
                openItem.setBackground(new ColorDrawable(Color.GREEN));
                //设置宽,一定要设置不然显示不出来
                openItem.setWidth(dp2px(90));
                //设置标题
                openItem.setTitle("打开");
                //设置文字大小
                openItem.setTitleSize(20);
                //设置文字颜色
                openItem.setTitleColor(Color.WHITE);
                //添加到listview中
                menu.addMenuItem(openItem);

                SwipeMenuItem deleteItem = new SwipeMenuItem(context);
                deleteItem.setBackground(new ColorDrawable(Color.RED));
                deleteItem.setWidth(dp2px(90));
                //设置图片
                deleteItem.setIcon(android.R.drawable.ic_delete); 
                menu.addMenuItem(deleteItem);
            }
        };

        SwipeMenuListView listView = (SwipeMenuListView) findViewById(R.id.listView);
        listView.setMenuCreator(creator);
        listView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(int position, SwipeMenu menu,int index) {
                //index的值就是在SwipeMenu依次添加SwipeMenuItem顺序值,类似数组的下标。
                //从0开始,依次是:0、1、2、3...
                switch (index) {
                    case 0:
                        Toast.makeText(context, "打开:"+position,Toast.LENGTH_SHORT).show();
                        break;

                    case 1:
                        Toast.makeText(context, "删除:"+position,Toast.LENGTH_SHORT).show();
                        break;
                }
                // false : 当用户触发其他地方的屏幕时候,自动收起菜单。
                // true : 不改变已经打开菜单的样式,保持原样不收起。
                return false;
            }
        });
        // 监测用户在ListView的SwipeMenu侧滑事件。
        listView.setOnSwipeListener(new SwipeMenuListView.OnSwipeListener() {
            @Override
            public void onSwipeStart(int pos) {
                Log.d("位置:" + pos, "开始侧滑...");
            }
            @Override
            public void onSwipeEnd(int pos) {
                Log.d("位置:" + pos, "侧滑结束.");
            }
        });
        //测试数据集。
        String[] data = new String[30];
        for (int i = 0; i < data.length; i++) {
            data[i] = "测试数据:" + i;
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, data);
        listView.setAdapter(adapter);
    }
    public int dp2px(float dipValue) {
        final float scale = this.getResources().getDisplayMetrics().density;
        return (int) (dipValue * scale + 0.5f);
    }
}

猜你喜欢

转载自my.oschina.net/u/3698786/blog/1808037