list滑动删除item

来源:互联网 发布:淘宝可以延迟几天确定 编辑:程序博客网 时间:2024/05/21 17:35
public class Adapter_Coupons extends ArrayAdapter<Coupon> {
private LayoutInflater mInflater;
/**券列表*/
public ArrayList<Coupon> CouponsListAdapter = new ArrayList<Coupon>();

private Button curDel_btn;
private float x, ux;

private CouponDiscount mCouponDiscount;

public Adapter_Coupons(CouponDiscount activity) {
super(activity, 0);
mInflater = LayoutInflater.from(activity);
mCouponDiscount = activity;
}

@Override
public int getCount() {
return CouponsListAdapter.size();
}


@Override
public Coupon getItem(int position) {
if(position >= getCount()){
return null;
}
return CouponsListAdapter.get(position);
}

@Override
public long getItemId(int position) {
return position;
}


public View getView(final int position, View convertView, ViewGroup parent) {
final Coupon mCoupon = this.getItem(position);
ViewHolder holder = null;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_listview_coupon, null);
holder = new ViewHolder();
holder.couponName = (TextView) convertView.findViewById(R.id.couponName);
holder.couponPrice = (TextView) convertView.findViewById(R.id.couponPrice);
holder.couponNumber = (TextView) convertView.findViewById(R.id.couponNumber);
holder.couponValidity = (TextView) convertView.findViewById(R.id.couponValidity);
holder.comboPart = (TextView) convertView.findViewById(R.id.comboPart);
holder.comboNumber = (TextView) convertView.findViewById(R.id.comboNumber);
holder.btn_Coupon_Delete = (Button) convertView.findViewById(R.id.btn_Coupon_Delete);
convertView.setTag(holder);

} else {
holder = (ViewHolder) convertView.getTag();
   }

// 为每一个view项设置触控监听
convertView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
final ViewHolder holder = (ViewHolder) v.getTag();
// 当按下时处理
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// 设置背景为选中状态
// v.setBackgroundResource(R.drawable.mm_listitem_pressed);
// 获取按下时的x轴坐标
x = event.getX();
// 判断之前是否出现了删除按钮如果存在就隐藏
if (curDel_btn != null) {
curDel_btn.setVisibility(View.GONE);
}
} else if (event.getAction() == MotionEvent.ACTION_UP) {// 松开处理
// 设置背景为未选中正常状态
// v.setBackgroundResource(R.drawable.mm_listitem_simple);
// 获取松开时的x坐标
ux = event.getX();
// 判断当前项中按钮控件不为空时
if (holder.btn_Coupon_Delete != null) {
// 按下和松开绝对值差当大于20时显示删除按钮,否则不显示
if (Math.abs(x - ux) > 20) {
holder.btn_Coupon_Delete.setVisibility(View.VISIBLE);
curDel_btn = holder.btn_Coupon_Delete;
}
}
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {// 当滑动时背景为选中状态
// v.setBackgroundResource(R.drawable.mm_listitem_pressed);
} else {// 其他模式
// 设置背景为未选中正常状态
// v.setBackgroundResource(R.drawable.mm_listitem_simple);
}
return true;
}


});

holder.couponName.setText(mCoupon.getQuanName());
holder.couponPrice.setText("10元");
holder.couponNumber.setText("券号:"+mCoupon.getQuanNum());
holder.couponValidity.setText(mCoupon.getQuanValiddate());

Combo mCombo = mCoupon.getQuanCombo();
if(mCombo != null){
holder.comboPart.setText("套餐:"+mCombo.getComboPart());
holder.comboNumber.setText("附加"+mCombo.count+"套");
}else{
holder.comboPart.setText("套餐:无");
}


// holder.comboNumber.setText(""+mCombo.number);
// 为删除按钮添加监听事件,实现点击删除按钮时删除该项
holder.btn_Coupon_Delete.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mCouponDiscount.removeCoupons(mCoupon.getQuanNum(),position);


}
});
return convertView;
}

public class ViewHolder {
public TextView couponName;
public TextView couponPrice;
public TextView couponNumber;
public TextView couponValidity;
public TextView comboPart;
public TextView comboNumber;

//delete按钮
public Button btn_Coupon_Delete;
}

public void removeCoupons(int position){
if (curDel_btn != null){
curDel_btn.setVisibility(View.GONE);
}
CouponsListAdapter.remove(position);
notifyDataSetChanged();
}
}