教你怎样写qq listView滑动删除按钮


 怎么qq listView滑动删除选项按钮,作为码农,喜欢自己做点小项目自娱自乐,有时候感觉还挺有成就的,昨天晚上弄了一个小demo主要是做了一下放qq的滑动listView出现删除按钮的UI,这里贴一下主要的代码。    
    
    大家有需要等有时间上传到osc的git上,还没用过osc的,下面是主要代码,在getView中的代码,这里解决了ontouch与onclick等事件的冲突问题,看大家是否需要源码啊,如果不要的话就不上传了先,有需要的跟我说一声啊。分享在e良师益友网上,现在准备睡觉了。
    ViewHolder viewHolder = null;
    if (view == null) {
    viewHolder = new ViewHolder();
    view = LayoutInflater.from(mContext).inflate(R.layout.item, null);
    viewHolder.tvTitle = (TextView) view.findViewById(R.id.title);
    viewHolder.btnDel = (Button) view.findViewById(R.id.del);
    view.setTag(viewHolder);
    } else {
    viewHolder = (ViewHolder) view.getTag();
    }
    //为每一个view项设置触控监听
    view.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
    final ViewHolder holder = (ViewHolder) v.getTag();
    switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
    //设置背景为选中状态
    v.setBackgroundResource(android.R.color.holo_blue_light);
    //获取按下时的x轴坐标
    x = event.getX();
    //判断之前是否出现了删除按钮如果存在就隐藏
    if (curDel_btn != null) {
    curDel_btn.setVisibility(View.GONE);
    }
    break;
    case MotionEvent.ACTION_UP:
    //设置背景为未选中正常状态
    v.setBackgroundResource(android.R.color.background_light);
    //获取松开时的x坐标
    ux = event.getX();
    //判断当前项中按钮控件不为空时
    if (holder.btnDel != null) {
    //按下和松开绝对值差当大于20时显示删除按钮,否则不显示
    if (Math.abs(x - ux) > 20) {
    holder.btnDel.setVisibility(View.VISIBLE);
    curDel_btn = holder.btnDel;
    }
    }
    break;
    default:
    v.setBackgroundResource(R.drawable.mm_listitem_simple);
    break;
    }
    return false;
    }
    });
    viewHolder.tvTitle.setText(this.arrays.get(position));
    //为删除按钮添加监听事件,实现点击删除按钮时删除该项
    viewHolder.btnDel.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    if(curDel_btn!=null)
    curDel_btn.setVisibility(View.GONE);
    arrays.remove(position);
    notifyDataSetChanged();
    }
    });
    view.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    Toast.makeText(mContext, "View Onclick"+ position, Toast.LENGTH_SHORT).show();
    }
    });
    view.setOnLongClickListener(new OnLongClickListener() {
    public boolean onLongClick(View v) {
    Toast.makeText(mContext, "Long Click"+ position, Toast.LENGTH_SHORT).show();
    return true;
    }
    });
    return view;