package com.andbase.im.adapter;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.ab.db.storage.AbSqliteStorage;
import com.ab.image.AbImageLoader;
import com.ab.util.AbImageUtil;
import com.andbase.R;
import com.andbase.friend.UserDao;
import com.andbase.global.MyApplication;
import com.andbase.im.activity.ChatActivity;
import com.andbase.im.model.IMMessage;
import com.andbase.model.User;
public class ChatMsgViewAdapter extends BaseAdapter {
private List<IMMessage> mChatMsgList;
private Context mContext;
private ChatActivity activity = null;
private LayoutInflater mInflater;
private MyApplication application = null;
private UserDao mUserDao = null;
private AbSqliteStorage mAbSqliteStorage = null;
//图片下载器
private AbImageLoader mAbImageLoader = null;
public static interface IMsgViewType {
int IMVT_COM_MSG = 0;
int IMVT_TO_MSG = 1;
}
public ChatMsgViewAdapter() {
}
public ChatMsgViewAdapter(Context context, List<IMMessage> list) {
this.mContext = context;
this.mChatMsgList = list;
this.mInflater = LayoutInflater.from(context);
activity = (ChatActivity)context;
application = (MyApplication)activity.getApplication();
mUserDao = activity.mUserDao;
//初始化AbSqliteStorage
mAbSqliteStorage = activity.mAbSqliteStorage;
//图片下载器
mAbImageLoader = new AbImageLoader(mContext);
}
@Override
public int getCount() {
return mChatMsgList.size();
}
@Override
public Object getItem(int position) {
return mChatMsgList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
IMMessage mChatMsg = mChatMsgList.get(position);
if(mChatMsg.getToUserName().equals(application.mUser.getUserName())){
return IMsgViewType.IMVT_COM_MSG;
}else{
return IMsgViewType.IMVT_TO_MSG;
}
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final IMMessage mChatMsg = mChatMsgList.get(position);
final boolean isComMsg = getItemViewType(position)==IMsgViewType.IMVT_COM_MSG;
final ViewHolder viewHolder;
if (convertView == null){
if (isComMsg){
convertView = mInflater.inflate(R.layout.chatting_item_msg_text_right, null);
}else{
convertView = mInflater.inflate(R.layout.chatting_item_msg_text_left, null);
}
viewHolder = new ViewHolder();
viewHolder.sendTime = (TextView) convertView.findViewById(R.id.sendTime);
viewHolder.userName = (TextView) convertView.findViewById(R.id.userName);
viewHolder.chatContent = (TextView) convertView.findViewById(R.id.chatContent);
viewHolder.userHead = (ImageView) convertView.findViewById(R.id.userHead);
viewHolder.chatAttach = (ImageView) convertView.findViewById(R.id.chatAttach);
viewHolder.isComMsg = isComMsg;
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.chatAttach.setVisibility(View.GONE);
viewHolder.chatAttach.setOnClickListener(null);
viewHolder.userHead.setFocusable(false);
viewHolder.chatAttach.setFocusable(false);
if(mChatMsg.getSendState()==IMMessage.SENDING){
viewHolder.sendTime.setText(mChatMsg.getCreateDate()+" 正在发送...");
}else if(mChatMsg.getSendState()==IMMessage.SEND_FAILED){
viewHolder.sendTime.setText(mChatMsg.getCreateDate()+" 发送失败");
}else if(mChatMsg.getSendState()==IMMessage.SEND_FINISH){
viewHolder.sendTime.setText(mChatMsg.getCreateDate()+" 已发送");
}else if(mChatMsg.getSendState()==IMMessage.RECEIVED){
viewHolder.sendTime.setText(mChatMsg.getCreateDate()+" 已接收");
}
viewHolder.chatContent.setText(mChatMsg.getContent());
//viewHolder.userName.setText(mChatMsg.getUserName());
//final User u = mChatMsg.getUser();
String headUrl = null;
//if(u!=null){
// headUrl = u.getHeadUrl();
//}else{
//activity.queryUserById(mChatMsg.getuId(),position);
//}
//图片的下载
mAbImageLoader.display(viewHolder.userHead,headUrl,100,100);
return convertView;
}
static class ViewHolder {
public TextView sendTime;
public TextView userName;
public TextView chatContent;
public ImageView userHead;
public ImageView chatAttach;
public boolean isComMsg = true;
}
}