[Android-2A] -仿IOS微信滑动删除_SwipeListview左滑删除例子

时间:2022-07-30 23:00:31

https://yunpan.cn/cueUIQkRafQrH (提取码:7ec1)

关于这样类似的例子网上的代码很多,最近发现这个例子里的代码在开发中会遇到一系列的问题。比如ListView的OnItemClickListener中无法获取在AppAdapter中getView方法convertView setTag的数据,所以需要优化下。

原因是控件中的SwipeMenuAdapter对Listview中的条目进行了修改和再封装。

具体优化的思路为,将控件中的SwipeMenuAdapter去掉,把部分代码挪到Acitivity中的AppAdapter中。修改后的代码如下:

class AppAdapter extends BaseAdapter  implements OnSwipeItemClickListener{

        @Override
public int getCount() {
return mAppList.size();
} @Override
public ApplicationInfo getItem(int position) {
return mAppList.get(position);
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
SwipeMenuLayout layout = null;
if (convertView == null) {
convertView = View.inflate(getApplicationContext(), R.layout.item_list_app, null);
holder = new ViewHolder(convertView);
SwipeMenu menu = new SwipeMenu(mContext);
menu.setViewType(new Random().nextInt(3));//随机选择样式
createMenu(menu);
SwipeMenuView menuView = new SwipeMenuView(menu,(SwipeMenuListView) parent);
menuView.setOnSwipeItemClickListener(this);
SwipeMenuListView listView = (SwipeMenuListView) parent;
layout = new SwipeMenuLayout(convertView, menuView, listView.getCloseInterpolator(), listView.getOpenInterpolator());
layout.setPosition(position);
layout.setTag(holder);
} else {
layout = (SwipeMenuLayout) convertView;
layout.closeMenu();
layout.setPosition(position);
holder = (ViewHolder)layout.getTag();
}
ApplicationInfo item = getItem(position);
holder.iv_icon.setImageDrawable(item.loadIcon(getPackageManager()));
holder.tv_name.setText(item.loadLabel(getPackageManager()));
return layout;
} class ViewHolder {
ImageView iv_icon;
TextView tv_name;
public ViewHolder(View view) {
iv_icon = (ImageView) view.findViewById(R.id.iv_icon);
tv_name = (TextView) view.findViewById(R.id.tv_name);
}
} public void createMenu(SwipeMenu menu) {
if(creator != null) {
creator.create(menu);
}
} @Override
public void onItemClick(SwipeMenuView view, SwipeMenu menu, int index) {
if (mListView != null && mListView.getOnMenuItemClickListener() != null) {
mListView.getOnMenuItemClickListener().onMenuItemClick(view.getPosition(), menu, index);
} if(mListView != null && mListView.getTouchView() != null) {
mListView.getTouchView().smoothCloseMenu();
}
}
}

Eclipse源码:https://yunpan.cn/cuepakBM7KaU5 (提取码:b860)

Android Studio源码:https://yunpan.cn/cuephTqj8emRw (提取码:93e5)

[Android-2A] -仿IOS微信滑动删除_SwipeListview左滑删除例子的更多相关文章

  1. [转]ANDROID仿IOS微信滑动删除_SWIPELISTVIEW左滑删除例子

    转载:http://dwtedx.sinaapp.com/itshare_290.html 本例子实现了滑动删除ListView的Itemdemo的效果.大家都知道.这种创意是来源于IOS的.左滑删除 ...

  2. 微信小程序实现左滑删除源码

    左滑删除效果在app的交互方式中十分流行,比如全民应用微信 微信左滑删除 再比如曾引起很大反响的效率app Clear Clear左滑删除 从技术上来说,实现这个效果并不困难,响应一下滑动操作,移动一 ...

  3. 微信小程序实现左滑删除效果(原生/uni-app)

    实现效果 列表中侧滑删除 删除不同时存在 scrollview上下滑动与侧滑删除不影响 uni-app实现 html部分 <template> <scroll-view :scrol ...

  4. tableviewcell 系统工具删除:左滑删除,选中多个删除

    在编辑tableview的时候,我们有时候会需要编辑对一些cell进行删除(增加),在这个时候,我们最好用系统的方法来进行增删的操作 // // text1Controller.m // text / ...

  5. Android滑动列表&lpar;拖拽,左滑删除,右滑完成&rpar;功能实现(1)

    场景: 近期做的TODO APP需要在主页添加一个功能,就是可以左滑删除,右滑完成.看了一下当前其他人做的例如仿探探式的效果,核心功能基本一样,但是和我预想的还是有少量区别,于是干脆自己重头学一遍如何 ...

  6. Android开发学习之路-PopupWindow和仿QQ左滑删除

    这周作业,要做一个类似QQ的左滑删除效果的ListView,因为不想给每个item都放一个按钮,所以决定用PopupWindow,这里记录一下 先放一下效果图: 先说明一下这里面的问题: ①没有做到像 ...

  7. 仿QQ列表左滑删除

    一直想写个仿QQ通讯列表左滑删除的效果,今天终于忙里偷闲,简单一个. 大概思路是这样的: 通过 ontouchstartontouchmoveontouchend 结合css3的平移. 不多说,直接上 ...

  8. Android ListView左滑删除、左滑自定义功能

    最近项目需要ListView左滑删除功能,搜集了很多资料发现了一个某一前辈写的库能很简单的实现这个功能,而且有源码,直接拿来使用了. 库名字叫做SwipeMenuListView,下面给大家演示一下使 ...

  9. 微信小程序独家秘笈之左滑删除

    代码地址如下:http://www.demodashi.com/demo/14056.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

随机推荐

  1. rem、em、px的区别

    px 像素(Pixel).相对长度单位.像素px是相对于显示器屏幕分辨率而言的. 特点: 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或re ...

  2. 学习练习 java练习小题题目:判断一个整数能被几个9整除

    题目:判断一个整数能被几个9整除 package com.hanqi.lianxi; import java.io.*; public class Test1 { //判断能否被9整除 static ...

  3. 第二百八十七天 how can I 坚持

    终于把假请下来了,没有想象的那么复杂. 忘退车票了.明天应该有手续费了,现在又维护了,哎.10%的手续费了.7块钱,没了.希望不会白回去一趟啊. sql,group by  having .还是学不会 ...

  4. EXTJS 4&period;2 资料 控件之textfield文本框加事件的用法

    { xtype: "textfield", width: 100, id: "txtGroupName", name: "txtGroupName&q ...

  5. LeetCode——Valid Palindrome

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  6. 【Java基础】【03运算符&amp&semi;if语句】

    03.01_Java语言基础(逻辑运算符的基本用法)(掌握) A:逻辑运算符有哪些 &,|,^,! &&,|| B:案例演示 逻辑运算符的基本用法 注意事项: a:逻辑运算符一 ...

  7. servlet篇 之servlet实现

    一:如何写一个servlet 实现/继承 如下 接口/类 Servlet   接口 有五个抽象方法 GenericServlet  抽象类     有一个抽象方法 HttpServlet   抽象类 ...

  8. stl string的erase方法

    ; i < s.size(); i++) { ') { s.erase(i,); i--; } } 删除string中的所有0.

  9. Java SSM 框架相关基础面试题

    一.Spring 面试题 1. Spring 在 SSM 中起什么作用? Spring 是轻量级框架,作用是作为 Bean 工厂,用来管理 Bean 的声明周期和框架集成. Spring 的两大核心: ...

  10. &lowbar;&lowbar;dirname与&lowbar;&lowbar;filename

    (1) __filename变量 node.js中,在任何模块文件内部,可以使用__filename变量获取当前模块文件的带有完整绝对路径的文件名. 在应用程序根目录下新建app.js文件,其中代码如 ...