android QQ消息左滑动删除实例(优化版SwipeListViewEX)

仿 QQ消息左滑动删除item消息实例

源代码参考:http://blog.csdn.net/gaolei1201/article/details/42677951

自己作了一些调整,全部代码下载地址:

http://download.csdn.net/detail/jenson138/8490067

效果图:

以下只有适配器类:

  1 package com.ryg.slideview;
  2
  3 import java.util.List;
  4
  5 import com.ryg.slideview.SwipeItemView.OnSlideListener;
  6
  7 import android.content.Context;
  8 import android.view.LayoutInflater;
  9 import android.view.View;
 10 import android.view.View.OnClickListener;
 11 import android.view.ViewGroup;
 12 import android.widget.BaseAdapter;
 13 import android.widget.ImageView;
 14 import android.widget.TextView;
 15 import android.widget.Toast;
 16
 17
 18 public class HistoryListViewAdapter extends BaseAdapter {
 19
 20     private LayoutInflater mInflater;
 21     private List<HistoryListItemObject> mMessageItems;
 22     private Context context;
 23     private SwipeItemView mLastSlideViewWithStatusOn;
 24     public HistoryListViewAdapter(Context context,List<HistoryListItemObject> mMessageItems) {
 25         mInflater = LayoutInflater.from(context);
 26         this.mMessageItems=mMessageItems;
 27         this.context=context;
 28     }
 29
 30     @Override
 31     public int getCount() {
 32         return mMessageItems.size();
 33     }
 34
 35     @Override
 36     public Object getItem(int position) {
 37         return mMessageItems.get(position);
 38     }
 39
 40     @Override
 41     public long getItemId(int position) {
 42         return position;
 43     }
 44
 45     @Override
 46     public View getView(final int position, View convertView, ViewGroup parent) {
 47         ViewHolder holder;
 48         SwipeItemView slideView = (SwipeItemView) convertView;
 49         if (slideView == null) {
 50             View itemView = mInflater.inflate(R.layout.history_listview_items, null);
 51
 52             slideView = new SwipeItemView(context);
 53             slideView.setContentView(itemView);
 54
 55             holder = new ViewHolder(slideView);
 56             slideView.setOnSlideListener(new OnSlideListener() {
 57
 58                 @Override
 59                 public void onSlide(View view, int status) {
 60                     // TODO Auto-generated method stub
 61                      if (mLastSlideViewWithStatusOn != null && mLastSlideViewWithStatusOn != view) {
 62                             mLastSlideViewWithStatusOn.shrink();
 63                         }
 64
 65                         if (status == SLIDE_STATUS_ON) {
 66                             mLastSlideViewWithStatusOn = (SwipeItemView) view;
 67                         }
 68                 }
 69             });
 70             slideView.setTag(holder);
 71         } else {
 72             holder = (ViewHolder) slideView.getTag();
 73         }
 74         HistoryListItemObject item = mMessageItems.get(position);
 75 //        item.slideView = slideView;
 76         if(CustomSwipeListView.mFocusedItemView!=null){
 77         CustomSwipeListView.mFocusedItemView.shrink();
 78         }
 79
 80         holder.icon.setImageResource(item.getIconRes());
 81         holder.title.setText(item.getTitle());
 82         holder.msg.setText(item.getMsg());
 83 //        holder.time.setText(item.time);
 84         holder.deleteHolder.setOnClickListener(new OnClickListener() {
 85
 86             @Override
 87             public void onClick(View arg0) {
 88                 // TODO Auto-generated method stub
 89                 mMessageItems.remove(position);
 90                 Toast.makeText(context, String.valueOf(position), Toast.LENGTH_SHORT).show();
 91                 notifyDataSetChanged();
 92             }
 93         });
 94
 95         return slideView;
 96     }
 97     private static class ViewHolder {
 98         public ImageView icon;
 99         public TextView title;
100         public TextView msg;
101 //        public TextView time;
102         public ViewGroup deleteHolder;
103
104         ViewHolder(View view) {
105             icon = (ImageView) view.findViewById(R.id.icon);
106             title = (TextView) view.findViewById(R.id.title);
107             msg = (TextView) view.findViewById(R.id.msg);
108 //            time = (TextView) view.findViewById(R.id.time);
109             deleteHolder = (ViewGroup)view.findViewById(R.id.holder);
110         }
111     }
112 }
时间: 2024-10-20 11:13:53

android QQ消息左滑动删除实例(优化版SwipeListViewEX)的相关文章

类似QQ消息左滑删除的Demo

最近在网上学到一篇类似QQ消息左滑删除的demo,完善了下代码,感觉还不错,特此分享一波: CustomSwipeListView.java 是个继承自ListView的类,里面调用了自定义View 类SwipeItemView.java的一个收缩的方法.其实QQ消息删除这个动画可以有很多种方法实现,这里我们介绍的方法是:常规ListView的每个Item展示方式不变,只是在Adapter类里面去绑定该显示的数据和删除等字样.具体详见如下: 自定义的ListView: package com.r

高仿 美团 向左滑动删除条目

1.效果图             2.功能实现 2.1 布局结构 <?xml version="1.0" encoding="UTF-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height=&quo

android 下拉刷新上拉加载更多,高仿ios左滑动删除item,解决了众多手势问题

一.前言 老规矩,别的不说,这demo是找了很相关知识集合而成的,可以说对我这种小白来说是绞尽脑汁!程序员讲的是无图无真相!现在大家一睹为快! 二.比较关键的还是scroller这个类的 package com.icq.slideview.view; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.util.TypedValue; i

ANDROID仿IOS微信滑动删除_SWIPELISTVIEW左滑删除例子

http://dwtedx.sinaapp.com/itshare_290.html 本例子实现了滑动删除ListView的Itemdemo的效果.大家都知道.这种创意是来源于IOS的.左滑删除的功能.在Android上面实现比较麻烦.本例子中不仅实现了左滑删除功能.还实现了左滑赞.左滑分享.左滑收藏等功能.当然大家也可以根据自己项目的需求来修改功能.QQ和微信也实现了相同的功能.大家可以看看.先上程序运行的效果 怎么样.大家看了这个截图是不是很心动呀.而且在左滑的时候还配有简单的滑动动画呢.非

android 继承ListView实现滑动删除功能.

在一些用户体验较好的应用上,可以经常遇见   在ListView中  向左或向右滑动便可删除那一项列表. 具体实现  则是继承ListView实现特定功能即可. (1). 新建 delete_button.xml文件 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" a

qq联系人 左滑删除功能

// 局部刷新 NSArray *indexPaths = @[ [NSIndexPath indexPathForRow:0 inSection:0], [NSIndexPath indexPathForRow:1 inSection:0] ]; [self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationLeft]; #pragma mark - 按钮的点击 - (IBAc

IOS uitableviewcell 向左滑动删除编辑等

主要实现这个方法就好了 -(NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{ return @[ [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:NSLocalizedString(@&qu

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

这周作业,要做一个类似QQ的左滑删除效果的ListView,因为不想给每个item都放一个按钮,所以决定用PopupWindow,这里记录一下 先放一下效果图: 先说明一下这里面的问题: ①没有做到像QQ那样可以允许item跟随手指移动,虽然PopupWindow有update方法让我们动态移动,但是在屏幕外移动会没有动画效果,直接弹进来 ②仔细观察可以发现,item的滑动和删除按钮的滑动是分开的,无法保证它们会一起播放,QQ的动画可以 再说说大概的思路,因为我们没有让item都带上Button

Android ListView滑动删除及响应事件详解

目标:实现类似QQ,微信的消息列表滑动删除 具体操作: 1. 主页面布局 首先在布局文件(本例是activity_main.xml)中引入ListView控件,并指定id(如下代码中黑体部分). <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" andr