Android仿QQ和iOS的ListView左滑出现删除和置顶等操作,可自定义菜单
来源:互联网 发布:lnmp 腾讯云 ubuntu 编辑:程序博客网 时间:2024/05/17 05:54
一:介绍
大家在项目中可能会有对ListView向左滑动的时候出现删除,置顶等等操作的需求,例如QQ聊天列表左滑,iOS中左滑删除等等,下面就介绍一下如何实现这种效果
二:先给大家展示效果图,先睹为快
三:实现步骤
1.这种效果的ListView是自定义的控件,开源库的下载地址是进入github地址,大家新建工程后依赖,然后就可以使用这个自定义控件,依赖库在后面的demo中,后面会提供demo的下载地址
2.布局文件,引入这个自定义控件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zidiv.slidedelete.MainActivity"> <com.baoyz.swipemenulistview.SwipeMenuListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
listView = ((SwipeMenuListView) findViewById(R.id.listView)); //虚拟数据源 for (int i = 0; i < 30; i++) { list.add("item" + i); } adapter = new MyAdapter(context, list); listView.setAdapter(adapter); //点击事件一样写 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(context, "你点击了" + list.get(position), Toast.LENGTH_SHORT).show(); } }); listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(context, "longClick" + list.get(position), Toast.LENGTH_SHORT).show(); return true; } });
4.向ListView中加入左滑出现的删除置顶菜单
//加入侧滑显示的菜单 //1.首先实例化SwipeMenuCreator对象 SwipeMenuCreator creater = new SwipeMenuCreator() { @Override public void create(SwipeMenu menu) { // create置顶item SwipeMenuItem item1 = new SwipeMenuItem(context); // set item background item1.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9, 0xCE))); // set item width item1.setWidth(dp2px(90)); // set item title item1.setTitle("置顶"); // set item title fontsize item1.setTitleSize(18); // set item title font color item1.setTitleColor(Color.WHITE); // add to menu menu.addMenuItem(item1); //同理create删除item SwipeMenuItem deleteItem = new SwipeMenuItem(context); // set item background deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9, 0x3F, 0x25))); // set item width deleteItem.setWidth(dp2px(90)); // set a icon deleteItem.setIcon(R.mipmap.ic_delete); // add to menu menu.addMenuItem(deleteItem); } }; // set creator listView.setMenuCreator(creater);
5.给删除和置顶菜单添加点击事件
//2.菜单点击事件 listView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(int position, SwipeMenu menu, int index) { switch (index) { case 0: //置顶的逻辑 if (position == 0) { Toast.makeText(context, "此项已经置顶", Toast.LENGTH_SHORT).show(); return false; } String str = list.get(position); for (int i = position; i > 0; i--) { String s = list.get(i - 1); list.remove(i); list.add(i, s); } list.remove(0); list.add(0, str); adapter.notifyDataSetChanged(); break; case 1: //删除的逻辑 list.remove(position); adapter.notifyDataSetChanged(); break; } return false; } }); }
四:用起来还是非常方便的,我是用Androidstudio写的demo,大家下载后如果build出错,就修改一下build.gradle文件,具体报错可以都可以在stackoverflow网站上找到解决方案,好了,这是demo地址:点击下载demo
1 0
- Android仿QQ和iOS的ListView左滑出现删除和置顶等操作,可自定义菜单
- listview左滑删除和置顶(仿QQ)
- Android仿QQ左滑删除置顶ListView
- Android 仿QQ首页ListView左滑置顶、删除等实现源码
- 仿QQ消息列表的左滑置顶与删除
- 简单ListView仿QQ左滑删除
- RecyclerView仿QQ消息列表左滑弹出菜单,标记已读和删除
- Android仿QQ侧滑(删除、置顶等)功能
- 仿iOS左滑删除ListView
- 仿QQ消息Listview侧滑置顶、删除
- 自定义listview 实现仿qq聊天列表左滑删除效果
- 仿QQ侧滑删除,自定义ListView
- 仿QQ聊天Listview横向拖动删除等操作
- 仿QQ左滑删除
- 仿QQ左滑删除
- 仿QQ左滑删除
- android ListView 左滑和IOS一样的效果
- 用sidingmenu仿QQ左划菜单加listview滑动删除已解决冲突
- Java基础08 继承
- iOS开发那些事--性能优化–内存泄露问题的解决
- SQL语句时间格式更新
- 2016蓝桥杯假期任务之《黑洞数》
- Oracle dblink详解
- Android仿QQ和iOS的ListView左滑出现删除和置顶等操作,可自定义菜单
- 月薪2W和1W的工作,你会怎么选
- typedef,struct,sizeof(type),指针,随机输出,链表
- Android 内存 - 获取单个应用内存限制
- Android官方下拉刷新与下拉刷新和上拉加载SwipeRefreshLayout
- jQuery中$.fn与jQuery.extend的区别
- 国家标准下载
- table的td/th宽度兼容问题(谷歌下)
- 2016年回顾过去