/**
* Copyright (C) 2013-2014 EaseMob Technologies. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ccxt.whl.adapter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
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.ArrayAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.ccxt.whl.R;
import com.ccxt.whl.activity.zai_showbigimage;
import com.ccxt.whl.domain.User;
import com.ccxt.whl.utils.CommonUtils;
import com.ccxt.whl.utils.ImageOptions;
import com.easemob.chat.EMChatManager;
import com.easemob.chat.EMConversation;
import com.easemob.chat.EMMessage;
import com.easemob.chat.ImageMessageBody;
import com.easemob.chat.TextMessageBody;
import com.nostra13.universalimageloader.core.ImageLoader;
/**
* 在哪adpater
*
*/
public class ZainaAdapter extends ArrayAdapter<User> {
private LayoutInflater inflater;
private Context context;
//private String headurl ;
public ZainaAdapter(Context context, int textViewResourceId, List<User> objects) {
super(context, textViewResourceId, objects);
this.context = context;
inflater = LayoutInflater.from(context);
}
@SuppressLint("ResourceAsColor")
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.zaina_list_item, parent, false);
}
ViewHolder holder = (ViewHolder) convertView.getTag();
if (holder == null) {
holder = new ViewHolder();
holder.name = (TextView) convertView.findViewById(R.id.zaina_name);
//holder.unreadLabel = (TextView) convertView.findViewById(R.id.unread_msg_number);
holder.message = (TextView) convertView.findViewById(R.id.zaina_message);
holder.time = (TextView) convertView.findViewById(R.id.zai_time);
holder.avatar = (ImageView) convertView.findViewById(R.id.zaina_avatar);
holder.msgState = (TextView)convertView.findViewById(R.id.zaina_sex_state);
holder.city = (TextView)convertView.findViewById(R.id.zaina_city);
holder.list_item_layout=(RelativeLayout) convertView.findViewById(R.id.list_item_layout);
convertView.setTag(holder);
}
/*if(position%2==0)
{
holder.list_item_layout.setBackgroundResource(R.drawable.mm_listitem);
}else{
holder.list_item_layout.setBackgroundResource(R.drawable.mm_listitem_grey);
}*/
// Log.d("log","position========"+position);
final User user = getItem(position);
// Log.d("log",user.toString());
// Log.d("log","position=user======="+user.getNick());
/*if(user instanceof EMGroup){
//群聊消息,显示群聊头像
holder.avatar.setImageResource(R.drawable.group_icon);
}else{
holder.avatar.setImageResource(R.drawable.default_avatar);
}*/
String username = user.getUsername();
// 获取与此用户/群组的会话
EMConversation conversation = EMChatManager.getInstance().getConversation(username);
holder.name.setText(user.getNick() != null ? user.getNick() : username);
holder.message.setText(!CommonUtils.isNullOrEmpty(user.getJiedao()) ? user.getJiedao():"我的位置暂时保密,嘻嘻~");//显示街道信息
//holder.time.setText(user.getLasttime());//显示最后时间
//holder.time.setText("刚刚");//显示最后时间
//if()
holder.time.setText(!CommonUtils.isNullOrEmpty(user.getLasttime()) ? jisuan(user.getLasttime()):"");
holder.msgState.setText(!CommonUtils.isNullOrEmpty(user.getAge()) ? user.getAge():"21");//这里是性别
holder.city.setText(user.getCity());
//holder.msgState.setBackgroundColor(R.color.gril_text_back);
if(user.getSex().equals("1")){
holder.msgState.setBackgroundResource(R.drawable.textview_boy_style);
}else{
holder.msgState.setBackgroundResource(R.drawable.textview_girl_style);
}
ImageLoader.getInstance().displayImage(user.getHeaderurl(), holder.avatar, ImageOptions.getOptions());
//headurl = user.getHeaderurl();
holder.avatar.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(!CommonUtils.isNullOrEmpty(user.getHeaderurl())){
Intent intent = new Intent((Activity)context, zai_showbigimage.class);
intent.putExtra("headurl", user.getHeaderurl());
Activity activity =(Activity)context;
activity.startActivity(intent);
}
}
});
/*if (conversation.getUnreadMsgCount() > 0) {
// 显示与此用户的消息未读数
holder.unreadLabel.setText(String.valueOf(conversation.getUnreadMsgCount()));
holder.unreadLabel.setVisibility(View.VISIBLE);
} else {
holder.unreadLabel.setVisibility(View.INVISIBLE);
}
if (conversation.getMsgCount() != 0) {
// 把最后一条消息的内容作为item的message内容
EMMessage lastMessage = conversation.getLastMessage();
holder.message.setText(SmileUtils.getSmiledText(getContext(), getMessageDigest(lastMessage, (this.getContext()))),
BufferType.SPANNABLE);
holder.time.setText(DateUtils.getTimestampString(new Date(lastMessage.getMsgTime())));
if (lastMessage.direct == EMMessage.Direct.SEND && lastMessage.status == EMMessage.Status.FAIL) {
holder.msgState.setVisibility(View.VISIBLE);
} else {
holder.msgState.setVisibility(View.GONE);
}
}*/
return convertView;
}
/**
* 根据消息内容和消息类型获取消息内容提示
*
* @param message
* @param context
* @return
*/
private String getMessageDigest(EMMessage message, Context context) {
String digest = "";
switch (message.getType()) {
case LOCATION: // 位置消息
if (message.direct == EMMessage.Direct.RECEIVE) {
//从sdk中提到了ui中,使用更简单不犯错的获取string方法
// digest = EasyUtils.getAppResourceString(context, "location_recv");
digest = getStrng(context, R.string.location_recv);
digest = String.format(digest, message.getFrom());
return digest;
} else {
// digest = EasyUtils.getAppResourceString(context, "location_prefix");
digest = getStrng(context, R.string.location_prefix);
}
break;
case IMAGE: // 图片消息
ImageMessageBody imageBody = (ImageMessageBody) message.getBody();
digest = getStrng(context, R.string.picture) + imageBody.getFileName();
break;
case VOICE:// 语音消息
digest = getStrng(context, R.string.voice);
break;
case VIDEO: // 视频消息
digest = getStrng(context, R.string.video);
break;
case TXT: // 文本消息
TextMessageBody txtBody = (TextMessageBody) message.getBody();
digest = txtBody.getMessage();
break;
case FILE: //普通文件消息
digest = getStrng(context, R.string.file);
break;
default:
System.err.println("error, unknow type");
return "";
}
return digest;
}
@SuppressLint("SimpleDateFormat")
private String jisuan(String shijianchuo){
long unixLong = 0;
StringBuffer sb = null;
try {
unixLong = Long.parseLong(shijianchuo) * 1000;
} catch(Exception ex) {
System.out.println("String转换Long错误,请确认数据可以转换!");
}
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date now ;
try {
now = df.parse(df.format(new Date()));
// java.util.Date date=df.parse("2004-01-02 11:30:24");
java.util.Date date = df.parse(df.format(unixLong));//获取参数时间
long l=now.getTime()- date.getTime();
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long s=(l/1000-day*24*60*60-hour*60*60-min*60);
sb = new StringBuffer();
//sb.append("发表于:");
if(day > 0){
sb.append(day+"天前");
}else if(hour > 0 ){
sb.append(hour+"小时前");
}else if(min > 0 ){
sb.append(min+"分钟前");
}else{
sb.append("刚刚");
}
// sb.append(s+"秒 前");
// sb.append("前");
//System.out.println(sb.toString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sb.toString();
}
private static class ViewHolder {
/** 和谁的聊天记录 */
TextView name;
/** 消息未读数 */
TextView unreadLabel;
/** 最后一此登录的地址 */
TextView message;
/** 最后一次登录的时间 */
TextView time;
/** 用户头像 */
ImageView avatar;
/** 性别 */
TextView msgState;
/** 城市 */
TextView city;
/**整个list中每一行总布局*/
RelativeLayout list_item_layout;
}
String getStrng(Context context, int resId){
return context.getResources().getString(resId);
}
}