listview左滑删除和置顶(仿QQ)
1、添加依赖
dependencies {
compile 'com.baoyz.swipemenulistview:library:1.3.0'
}
2、创建好Demo后,在XML文件中添加
<com.baoyz.swipemenulistview.SwipeMenuListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" />
3、创建一个SwipeMenuCreator(用于添加Item)
SwipeMenuCreator creator = new SwipeMenuCreator() { @Override public void create(SwipeMenu menu) { //创建一个开放的item SwipeMenuItem openItem = new SwipeMenuItem(getApplicationContext()); //设置item的背景 openItem.setBackground(new ColorDrawable(Color.BLUE)); //设置item的宽度 openItem.setWidth(90); //设置item的标题 openItem.setTitle("置顶"); openItem.setTitleColor(Color.WHITE); //设置item标题字体的大小 openItem.setTitleSize(15); //添加到菜单中 menu.addMenuItem(openItem); //创建删除的item SwipeMenuItem deleteItem = new SwipeMenuItem(getApplicationContext()); //设置背景颜色 deleteItem.setBackground(new ColorDrawable(Color.RED)); //设置宽度 deleteItem.setWidth(90); //设置一个图标 deleteItem.setIcon(R.mipmap.ic_launcher); //添加到菜单中 menu.addMenuItem(deleteItem); } }; //设置creator swipeMenuListView.setMenuCreator(creator);4、监听它的点击事件
//可以添加点击事件 swipeMenuListView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(int position, SwipeMenu menu, int index) { switch (index){ case 0: Toast.makeText(MainActivity.this, "点击了0", Toast.LENGTH_SHORT).show(); break; case 1: Toast.makeText(MainActivity.this, "点击了1", Toast.LENGTH_SHORT).show(); break; } return false; } });5、设置滑动的方向
//设置滑动的方向 swipeMenuListView.setSwipeDirection(SwipeMenuListView.DIRECTION_LEFT);//左 swipeMenuListView.setSwipeDirection(SwipeMenuListView.DIRECTION_RIGHT);//右6、创建不同的Menu可以实现下图效果。
class AppAdapter extends BaseAdapter { ... @Override public int getViewTypeCount() { // menu type count return 2; } @Override public int getItemViewType(int position) { // current menu type return type; } ... }创建好条目的类型,还要创建不同的
SwipeMenuCreator
SwipeMenuCreator creator = new SwipeMenuCreator() { @Override public void create(SwipeMenu menu) { // Create different menus depending on the view type switch (menu.getViewType()) { case 0: // create menu of type 0 break; case 1: // create menu of type 1 break; ... } } };7、Other
Step1:
监听swipe处于打开还是关闭的状态
listView.setOnSwipeListener(new OnSwipeListener() { @Override public void onSwipeStart(int position) { // swipe start } @Override public void onSwipeEnd(int position) { // swipe end } });Step2:
打开SwipeMenuListView菜单的方法
listView.smoothOpenMenu(position);
Step3:打开或关闭动画插入器// Close Interpolator listView.setCloseInterpolator(new BounceInterpolator()); // Open Interpolator listView.setOpenInterpolator(...);