package com.mailssenger.adapter;
import java.util.LinkedList;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.google.gson.Gson;
import com.mailssenger.CommonApplication;
import com.mailssenger.R;
import com.mailssenger.activity.ChatActivity;
import com.mailssenger.db.MsgDB;
import com.mailssenger.db.ConvDB;
import com.mailssenger.db.UserDB;
import com.mailssenger.model.ConvModel;
import com.mailssenger.model.MailModel;
import com.mailssenger.model.UserModel;
import com.mailssenger.util.L;
import com.mailssenger.util.SharedPreferencesUtil;
import com.mailssenger.util.T;
import com.mailssenger.util.TimeUtil;
public class RecentAdapter extends BaseAdapter {
private static String TAG = " >RecentAdapter";
CommonApplication mApplication = CommonApplication.getInstance();
SharedPreferencesUtil mSpUtil = mApplication.getSpUtil();
Gson mGson = mApplication.getGson();
UserDB mUserDB = mApplication.getUserDB();
MsgDB mMsgDB = mApplication.getMsgDB();
ConvDB mConvDB = mApplication.getConvDB();
private LayoutInflater mInflater;
private LinkedList<ConvModel> mData;
private Context context;
public RecentAdapter(Context context) {
this.context = context;
this.mInflater = LayoutInflater.from(context);
mMsgDB = CommonApplication.getInstance().getMsgDB();
mConvDB = CommonApplication.getInstance().getConvDB();
mUserDB = CommonApplication.getInstance().getUserDB();
}
public void setData(LinkedList<ConvModel> data) {
mData = data;
}
public void remove(int position) {
if (position < mData.size()) {
mData.remove(position);
notifyDataSetChanged();
}
}
public void remove(ConvModel item) {
if (mData.contains(item)) {
mData.remove(item);
notifyDataSetChanged();
}
}
public void addFirst(ConvModel item) {
if (mData.contains(item)) {
mData.remove(item);
}
mData.addFirst(item);
L.i("addFirst: " + item);
notifyDataSetChanged();
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return mData.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
RecentViewHolder viewHolder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.recent_listview_item, null);
viewHolder = new RecentViewHolder();
viewHolder.recent_listview_row = (RelativeLayout) convertView
.findViewById(R.id.recent_list_item_row);
viewHolder.recent_listview_img = (ImageView) convertView
.findViewById(R.id.recent_list_item_img);
viewHolder.recent_listview_name = (TextView) convertView
.findViewById(R.id.recent_list_item_name);
viewHolder.recent_listview_time = (TextView) convertView
.findViewById(R.id.recent_list_item_time);
viewHolder.recent_listview_summary = (TextView) convertView
.findViewById(R.id.recent_list_item_msg);
viewHolder.recent_listview_tips = (TextView) convertView
.findViewById(R.id.recent_list_item_tips);
convertView.setTag(viewHolder);
}else {
viewHolder = (RecentViewHolder) convertView.getTag();
}
if (position % 2 == 0) {
viewHolder.recent_listview_row.setBackgroundResource(R.color.grey);
} else {
viewHolder.recent_listview_row.setBackgroundResource(R.color.white);
}
//
ConvModel item = mData.get(position);
String name = item.getName();
if(name==null||name.equals("")){
name = item.getEmail();
}
viewHolder.recent_listview_name.setText(name);//昵称
if(item.getMessage().startsWith("{\"")){//whetehr start with json
viewHolder.recent_listview_summary.setText(mGson.fromJson(item.getMessage(), MailModel.class).getSubject());
}else{
viewHolder.recent_listview_summary.setText(item.getMessage());
}
// if(item.getMessage().startsWith("{email:"))
//
viewHolder.recent_listview_time
.setText(TimeUtil.getChatTime(item.getTime()));
viewHolder.recent_listview_img
.setImageResource(CommonApplication.heads[item.getEmail().charAt(1)%18]);//头像设置
//获得当点会话的聊天对象 邮箱
String hisEmail = item.getEmail();
//新消息提示,与 他的对话新消息数,传入他的邮箱地址
int num = mMsgDB.getNewCount(hisEmail);
//新消息数目显示
if (num > 0) {
viewHolder.recent_listview_tips.setVisibility(View.VISIBLE);
viewHolder.recent_listview_tips.setText(num + "");
} else {
viewHolder.recent_listview_tips.setVisibility(View.GONE);
}
//点击监听
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ConvModel item = mData.get(position);
UserModel u = mUserDB.getById(item.getEmail());
T.dShowLong(context, mGson.toJson(u));
//清空所有新消息
mMsgDB.clearNewCount(u.getEmail());
//将用户对象传给 ChatActivity.class
Intent toChatIntent = new Intent(context,ChatActivity.class);
toChatIntent.putExtra("user", u);
context.startActivity(toChatIntent);
}
});
return convertView;
}
final class RecentViewHolder {
public RelativeLayout recent_listview_row;
public ImageView recent_listview_img;
public TextView recent_listview_name;
public TextView recent_listview_time;
public TextView recent_listview_summary;
public TextView recent_listview_tips;
}
}