listview滑动删除item的一个方案
来源:互联网 发布:广州525孕妇摄影淘宝网 编辑:程序博客网 时间:2024/04/30 11:49
功能:在listview上,向右滑动,直接删除一个item
主要实现思路:
检测listview的touch操作,down时,记录位置,up时,做删除。
部分代码:
mListView.setOnTouchListener(new OnTouchListener() {private int mDownX = 0;private int mDownY = 0;@Overridepublic boolean onTouch(View v, MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:mDownX = Math.round(event.getX());mDownY = Math.round(event.getY());break;case MotionEvent.ACTION_MOVE:break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_CANCEL: {int upX = Math.round(event.getX());int upY = Math.round(event.getY());// 获取2次点击的item位置 item以外的pos是-1int downPosition = ((ListView)v).pointToPosition(mDownX, mDownY);int upPosition = ((ListView)v).pointToPosition(upX, upY);// 2次都在同一个item内 且有50的滑动距离if (downPosition == upPosition && (upX - mDownX) > 20) {// 如果没在动画中 且 点击在有效item内 才做处理boolean willRemove = (!mIsRemoving) && (upPosition >= 0);if (willRemove) {// 做删除动作 先动画 然后动画结束后做删除// 需要先获取第一个可见的view 因为getChildAt获取view的时候,坐标是从第一个可见view开始的int firstVisiableIndex = ((ListView)v).getFirstVisiblePosition();final int positionToRemove = upPosition;View viewToRemove = ((ListView)v).getChildAt(upPosition - firstVisiableIndex);// 移除动画 移动+渐隐Animation transAni = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0,Animation.RELATIVE_TO_SELF, 1.0f,Animation.RELATIVE_TO_SELF, 0,Animation.RELATIVE_TO_SELF, 0);Animation alphaAni = new AlphaAnimation(1.0f, 0);AnimationSet removeAni = new AnimationSet(true);removeAni.addAnimation(transAni);removeAni.addAnimation(alphaAni);removeAni.setDuration(500);// 设置回调 在动画结束后做删除数据removeAni.setAnimationListener(new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {mIsRemoving = true;}@Overridepublic void onAnimationRepeat(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {// 结束时删除数据// 删除外面的数据mAdapter.removeData(positionToRemove);// animation.cancel();// 调用cancel会导致二次进入onAnimationEndmIsRemoving = false;}});// 加入动画viewToRemove.startAnimation(removeAni);}}}break;default:break;}return false;}});
点击item时,item不高亮的处理:重写adapter的2个函数
// 处理掉item点击高亮 同时也导致item的click和longclick无法响应@Overridepublic boolean areAllItemsEnabled() {return false;}@Overridepublic boolean isEnabled(int position) {return false;}
效果:
0 0
- listview滑动删除item的一个方案
- 滑动删除ListView的Item
- listView 的item滑动删除
- 滑动删除ListView的Item的效果
- ListView的Item的滑动删除
- 自定义滑动删除item的ListView。
- 简单的listview item滑动删除
- listView的item向左滑动实现删除
- [一个星期自学安卓]向右滑动删除item的ListView
- 关于listview的item实现滑动删除功能实现
- ListView 实现带有Filpper效果的左右滑动删除 Item
- android ListView 滑动删除Item的代码分析
- Android 用HorizontalScrollView实现ListView的Item滑动删除
- Android开发--自定义控件实现listview的滑动删除item
- android listview滑动删除,实现item的点击缩回
- Android 用HorizontalScrollView实现ListView的Item滑动删除
- 自定义可左滑动删除item的listview
- 一个简单的自定义listview滑动删除
- Ctrl+Z 后恢复进程到前台
- sql语句练习50题
- SBT构建开发环境与代理和仓库配置
- SLF4J 的几种实际应用模式--之一:SLF4J+Log4J(转载)
- 泉水
- listview滑动删除item的一个方案
- 征迈科技USB硬件加密狗
- autoupdate script
- skb-4
- Android中使用加密图片的解决方案
- flume nginx 日志处理异常 JsonParseException: Unexpected character ('(' (code 40)): expected a valid value
- Xcode运行范例程序遇到的问题Command /bin/sh failed with exit code 1
- split 分割 字符串(分隔符如:* ^ : | , .) 及注意点
- 设计模式之:构造者模式