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 }

 

posted @ 2015-03-11 09:31  jenson138  阅读(4220)  评论(0编辑  收藏  举报