android中listview的item滑动删除效果(已解决listview点击问题)
领导看到iphone上tableview有个滑动删除的效果,要求在android上也实现,搜了下资料,实现起来比较简单,可弄到后面,居然不能点击了,把一篇文章中的代码修改了一下,捣鼓了一番,搞定,下面是代码:
1 package com.example.listsildedel; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import android.app.Activity; 7 import android.content.Intent; 8 import android.os.Bundle; 9 import android.widget.ListView; 10 11 public class MainActivity extends Activity { 12 13 private ListView mListView; 14 @Override 15 public void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 mListView = (ListView) this.findViewById(R.id.list); 19 List<String> list = new ArrayList<String>(); 20 for(int i=0;i<10;i++){ 21 list.add("选项"+i); 22 } 23 //实例化自定义内容适配类 24 MyAdapter adapter = new MyAdapter(this, this,list); 25 //为listView设置适配 26 mListView.setAdapter(adapter); 27 } 28 29 public void openActivity(){ 30 Intent intent = new Intent(this, TestActivity.class); 31 startActivity(intent); 32 } 33 34 }
adapter:
1 package com.example.listsildedel; 2 3 import java.util.List; 4 5 import android.content.Context; 6 import android.view.LayoutInflater; 7 import android.view.MotionEvent; 8 import android.view.View; 9 import android.view.View.OnClickListener; 10 import android.view.View.OnTouchListener; 11 import android.view.ViewGroup; 12 import android.widget.BaseAdapter; 13 import android.widget.Button; 14 import android.widget.TextView; 15 16 public class MyAdapter extends BaseAdapter { 17 18 private List<String> arrays = null; 19 private Context mContext; 20 private Button curDel_btn; 21 private float x,ux; 22 private MainActivity mActivity; 23 24 public MyAdapter(MainActivity activity, Context mContext, List<String> arrays) { 25 this.mContext = mContext; 26 this.arrays = arrays; 27 mActivity = activity; 28 29 } 30 31 public int getCount() { 32 return this.arrays.size(); 33 } 34 35 public Object getItem(int position) { 36 return null; 37 } 38 39 public long getItemId(int position) { 40 return position; 41 } 42 43 public View getView(final int position, View view, ViewGroup arg2) { 44 ViewHolder viewHolder = null; 45 if (view == null) { 46 viewHolder = new ViewHolder(); 47 view = LayoutInflater.from(mContext).inflate(R.layout.item, null); 48 viewHolder.tvTitle = (TextView) view.findViewById(R.id.title); 49 viewHolder.btnDel = (Button) view.findViewById(R.id.del); 50 view.setTag(viewHolder); 51 } else { 52 viewHolder = (ViewHolder) view.getTag(); 53 } 54 //换掉了原来listview中的onItemClick 55 <span style="font-size:18px;"><strong>view.setOnClickListener(new OnClickListener() { 56 57 public void onClick(View v) { 58 // TODO Auto-generated method stub 59 mActivity.openActivity(); 60 } 61 });</strong></span> 62 63 64 //为每一个view项设置触控监听 65 view.setOnTouchListener(new OnTouchListener() { 66 public boolean onTouch(View v, MotionEvent event) { 67 68 final ViewHolder holder = (ViewHolder) v.getTag(); 69 70 //当按下时处理 71 if (event.getAction() == MotionEvent.ACTION_DOWN) { 72 73 // //设置背景为选中状态 74 // v.setBackgroundResource(R.drawable.mm_listitem_pressed); 75 //获取按下时的x轴坐标 76 x = event.getX(); 77 //判断之前是否出现了删除按钮如果存在就隐藏 78 if (curDel_btn != null) { 79 if(curDel_btn.getVisibility() == View.VISIBLE){ 80 curDel_btn.setVisibility(View.GONE); 81 return true; 82 } 83 } 84 85 } else if (event.getAction() == MotionEvent.ACTION_UP) {// 松开处理 86 87 //设置背景为未选中正常状态 88 //v.setBackgroundResource(R.drawable.mm_listitem_simple); 89 //获取松开时的x坐标 90 ux = event.getX(); 91 92 //判断当前项中按钮控件不为空时 93 if (holder.btnDel != null) { 94 95 //按下和松开绝对值差当大于20时显示删除按钮,否则不显示 96 97 if (Math.abs(x - ux) > 20) { 98 holder.btnDel.setVisibility(View.VISIBLE); 99 curDel_btn = holder.btnDel; 100 return true; 101 } 102 } 103 } else if (event.getAction() == MotionEvent.ACTION_MOVE) {//当滑动时背景为选中状态 104 return true; 105 //v.setBackgroundResource(R.drawable.mm_listitem_pressed); 106 107 108 } else {//其他模式 109 //设置背景为未选中正常状态 110 //v.setBackgroundResource(R.drawable.mm_listitem_simple); 111 112 } 113 114 return false; 115 } 116 }); 117 viewHolder.tvTitle.setText(this.arrays.get(position)); 118 119 //为删除按钮添加监听事件,实现点击删除按钮时删除该项 120 viewHolder.btnDel.setOnClickListener(new OnClickListener() { 121 122 public void onClick(View v) { 123 if(curDel_btn!=null) 124 curDel_btn.setVisibility(View.GONE); 125 arrays.remove(position); 126 notifyDataSetChanged(); 127 128 } 129 }); 130 return view; 131 132 } 133 134 final static class ViewHolder { 135 TextView tvTitle; 136 Button btnDel; 137 } 138 }
代码下载: http://download.csdn.net/detail/wulingbo2005/6691885
转载请注明出处
转载于:https://www.cnblogs.com/ProgramBull/p/3477917.html
android中listview的item滑动删除效果(已解决listview点击问题)相关推荐
- Android 用HorizontalScrollView实现ListView的Item滑动删除 ,滑动错乱 冲突
用HorizontalScrollView实现类似微信的滑动删除 测试于:Android2.2+ 对于Android来说按键操作已经在减少,越来越多的手势操作层出不穷,今天介绍一款LIstView的I ...
- android微信列表滑动删除,Android仿微信对话列表滑动删除效果
微信对话列表滑动删除效果很不错的,借鉴了github上SwipeListView(项目地址:https://github.com/likebamboo/SwipeListView),在其上进行了一些重 ...
- Android 用HorizontalScrollView实现ListView的Item滑动删除
原理: 利用HorizontalScrollView可以横向滚动的特点实现滑动,根据动态的设置要展示的区域宽度,使得其余选项操作被挤出屏幕外面,从而实现单条滑动菜单的样式. 实现步骤: 实现Listv ...
- 高仿微信对话列表滑动删除效果
前言 用过微信的都知道.微信对话列表滑动删除效果是非常不错的,这个效果我们也能够有. 思路事实上非常easy,弄个ListView.然后里面的每一个item做成一个能够滑动的自己定义控件就可以.由于L ...
- Android开发之无bug滑动删除源码(非第三方库)
Android开发之无bug滑动删除源码(非第三方库源码请在最后面自行下载) 1.我们先来看下效果图:上边是抽取出来的demo,下边是公司用到的项目 2.我们来看下如何调用(我们这里以listView ...
- Android透明到白色滑动渐变,Android中Toolbar随着ScrollView滑动透明度渐变效果实现...
Android中Toolbar随着ScrollView滑动透明度渐变效果实现 一.思路:监听ScrollView的滑动事件 不断的修改Toolbar的透明度 二.注意 1.ScrollView 6.0 ...
- Android中View转换为Bitmap及getDrawingCache=null的解决方法
Android中View转换为Bitmap及getDrawingCache=null的解决方法 参考文章: (1)Android中View转换为Bitmap及getDrawingCache=null的 ...
- Android Studio中虚拟机显示比例不正确(已解决)
Android Studio中虚拟机显示比例不正确(已解决) 最近因为要写课设下载了Android Studio,因为第一次使用这个软件,下载完成之后初次使用出现了很多问题,比如我建立一个项目下载好虚 ...
- PPT保存pps演示文档时,在另一个电脑中字体显示不正常!(已解决)
PPT保存pps演示文档时,在另一个电脑中字体显示不正常!(已解决)
- ListView滑动删除效果实现
通过继承ListView然后结合PopupWindow实现 首先是布局文件: delete_btn.xml:这里只需要一个Button <?xml version="1.0" ...
最新文章
- NAT,Easy IP
- UVA 1593 Alignment of Code
- STC89C52单片机 使用定时器使LED灯闪烁
- 【html+css练习】小白使用html+css模拟音乐播放器构造了网页音乐播放器--1
- 美国计算机科学和计算机工程专业的好大学,2021USNews美国计算机工程专业排名一览表...
- android获得一个view的高度,Android ViewTreeObserver使用总结及获得View高度的几种方法...
- zstack 第一个例子
- python 动态规划_DP动态规划(Python实现)
- 使用XPO过程中的代码优化
- javasript深度拷贝
- SSH项目搭建-02-配置文件
- 【eoeAndroid索引】史上最牛最全android开发知识汇总
- Https网络安全传输详解
- 35枚不同风格的设计师个人网站欣赏
- NUCLEO L476RG学习笔记(六)定时器中断
- Visio画拓扑图随记
- 幻方解法之horse法生成奇阶幻方
- 苹果iOS App上架流程,非iOS开发人员上架教程
- 计算机查找是什么意思,计算机的字长是什么意思?怎么查找一台计算机上的字长啊?...
- 手机内部储存的绝对地址
热门文章
- “刑不上大夫,礼不下庶人”真实意思是什么
- UNBUNTU下与VirtualBox的WINDOWS共享文件夹
- css img 适配尺寸_一次解决你的图像尺寸和定位问题
- matlab 一维 fft,matlab - 一维信号的频谱分析(FFT等) - 堆栈内存溢出
- 012-JDK可视化监控工具-jstack
- Linux 内核进程管理之进程ID【转】
- Compile warning: Embedded binary's NSExtensionActivationRule is TRUEPREDICATE
- Python引力波火了 你该了解的开源框架
- Google发布MobileNets,一种预训练的高效Tensorflow计算机视觉模型
- 《DNS与BIND(第5版)》——10.12 系统优化