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;
}
}