package com.diandi.demo.adapter; import android.content.Context; import android.text.SpannableString; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Filterable; import android.widget.ImageView; import android.widget.TextView; import com.diandi.demo.R; import com.diandi.demo.adapter.base.ViewHolder; import com.diandi.demo.util.FaceTextUtils; import com.diandi.demo.util.ImageLoadOptions; import com.diandi.demo.util.TimeUtil; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; import cn.bmob.im.bean.BmobRecent; import cn.bmob.im.config.BmobConfig; import cn.bmob.im.db.BmobDB; /** * ******************************************************************************* * ********* Author : klob(kloblic@gmail.com) . * ********* Date : 2014-11-29 . * ********* Time : 11:46 . * ********* Project name : Diandi1.18 . * ********* Version : 1.0 * ********* Copyright @ 2014, klob, All Rights Reserved * ******************************************************************************* */ public class MessageRecentAdapter extends ArrayAdapter<BmobRecent> implements Filterable { private LayoutInflater inflater; private List<BmobRecent> mData; private Context mContext; public MessageRecentAdapter(Context context, int textViewResourceId, List<BmobRecent> objects) { super(context, textViewResourceId, objects); inflater = LayoutInflater.from(context); this.mContext = context; mData = objects; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub final BmobRecent item = mData.get(position); if (convertView == null) { convertView = inflater.inflate(R.layout.item_conversation, parent, false); } ImageView iv_recent_avatar = ViewHolder.get(convertView, R.id.iv_recent_avatar); TextView tv_recent_name = ViewHolder.get(convertView, R.id.tv_recent_name); TextView tv_recent_msg = ViewHolder.get(convertView, R.id.tv_recent_msg); TextView tv_recent_time = ViewHolder.get(convertView, R.id.tv_recent_time); TextView tv_recent_unread = ViewHolder.get(convertView, R.id.tv_recent_unread); //填充数据 String avatar = item.getAvatar(); if (avatar != null && !avatar.equals("")) { ImageLoader.getInstance().displayImage(avatar, iv_recent_avatar, ImageLoadOptions.getOptions()); } else { iv_recent_avatar.setImageResource(R.drawable.default_head_cry); } tv_recent_name.setText(item.getNick()); tv_recent_time.setText(TimeUtil.getChatTime(item.getTime())); int num = BmobDB.create(mContext).getUnreadCount(item.getTargetid()); //显示内容 if (item.getType() == BmobConfig.TYPE_TEXT) { SpannableString spannableString = FaceTextUtils.toSpannableString(mContext, item.getMessage()); tv_recent_msg.setText(spannableString); } else if (item.getType() == BmobConfig.TYPE_IMAGE) { tv_recent_msg.setText("[图片]"); } else if (item.getType() == BmobConfig.TYPE_LOCATION) { String all = item.getMessage(); if (all != null && !all.equals("")) {//位置类型的信息组装格式:地理位置&维度&经度 String address = all.split("&")[0]; tv_recent_msg.setText("[位置]" + address); } } else if (item.getType() == BmobConfig.TYPE_VOICE) { tv_recent_msg.setText("[语音]"); } if (num > 0) { tv_recent_unread.setVisibility(View.VISIBLE); tv_recent_unread.setText(num + ""); } else { tv_recent_unread.setVisibility(View.GONE); } return convertView; } }