package com.partynetwork.iparty.imessage; import java.util.ArrayList; import java.util.List; import com.partynetwork.iparty.R; import com.partynetwork.iparty.info.MessageItemInfo; import android.content.Context; import android.content.Intent; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; public class ImessageAdapter extends ArrayAdapter<MessageItemInfo> { private Context mContext = null; private float dx, ux; private List<Integer> isdelete = new ArrayList<Integer>();; public ImessageAdapter(Context context, List<MessageItemInfo> objects) { super(context, 0, objects); mContext = context; init(getCount()); } @Override public void notifyDataSetChanged() { init(getCount()); super.notifyDataSetChanged(); } private void init(int size) { isdelete.removeAll(isdelete); for (int i = 0; i < size; i++) { isdelete.add(0); } } public View getView(final int position, View convertView, ViewGroup parent) { View rowView = convertView; ImessageItemView imessageItemView; if (rowView == null) { rowView = LayoutInflater.from(mContext).inflate( R.layout.imessage_item, null); imessageItemView = new ImessageItemView(rowView); rowView.setTag(imessageItemView); } else { imessageItemView = (ImessageItemView) rowView.getTag(); } MessageItemInfo requst = getItem(position); // 加载头像 // 从网络获取头像 imessageItemView.setName(requst.getName()); imessageItemView.setSex(requst.getSex()); imessageItemView.setTime(requst.getTime()); imessageItemView.setSay(requst.getSay()); imessageItemView.setDelete(isdelete.get(position)); rowView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { final ImessageItemView view = (ImessageItemView) v.getTag(); // 当按下时处理 if (event.getAction() == MotionEvent.ACTION_DOWN) { // 获取按下时的x轴坐标 dx = event.getX(); } else if (event.getAction() == MotionEvent.ACTION_UP) {// 松开处理 // 获取松开时的x坐标 ux = event.getX(); // 判断当前项中按钮控件不为空时 if (view.getDelete() != null) { // 按下和松开绝对值差当大于20时显示删除按钮,否则不显示 if ((dx - ux) > 100) { if (view.getDelete().getVisibility() == View.GONE) { view.getDelete().setVisibility(View.VISIBLE); isdelete.set(position, 1); } } else if ((dx - ux) < -100) { if (view.getDelete().getVisibility() == View.VISIBLE) { view.getDelete().setVisibility(View.GONE); isdelete.set(position, 0); } } else { Intent intent = new Intent(mContext, ImessageChatActivity.class); intent.putExtra("name", view.getName()); mContext.startActivity(intent); } } } return true; } }); imessageItemView.getDelete().setOnClickListener(new OnClickListener() { public void onClick(View arg0) { if (isdelete.get(position) == 1) { isdelete.set(position, 0); isdelete.remove(position); remove(getItem(position)); notifyDataSetChanged(); } } }); return rowView; } }