微信对话框BaseAdapter的实现

来源:互联网 发布:创世数据网站 编辑:程序博客网 时间:2024/05/16 07:54


import android.content.Context;
import android.graphics.drawable.Drawable;

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 java.util.List;

public class ChatMsgViewAdapter extends BaseAdapter {
   
    //ListView视图的内容由IMsgViewType决定
    public static interface IMsgViewType
    {
        //对方发来的信息
        int IMVT_COM_MSG = 0;
        //自己发出的信息
        int IMVT_TO_MSG = 1;
    }
   
    private static final String TAG = ChatMsgViewAdapter.class.getSimpleName();
    private List<ChatMsgEntity> data;
    private Context context; 
    private LayoutInflater mInflater;

    public ChatMsgViewAdapter(Context context, List<ChatMsgEntity> data) {
        this.context = context;
        this.data = data;
        mInflater = LayoutInflater.from(context);
    }

    //获取ListView的项个数
    public int getCount() {
        return data.size();
    }

    //获取项
    public Object getItem(int position) {
        return data.get(position);
    }

    //获取项的ID
    public long getItemId(int position) {
        return position;
    }

    //获取项的类型
    public int getItemViewType(int position) {
        // TODO Auto-generated method stub
         ChatMsgEntity entity = data.get(position);
        
         if (entity.getMsgType())
         {
             return IMsgViewType.IMVT_COM_MSG;
         }else{
             return IMsgViewType.IMVT_TO_MSG;
         }
        
    }

    //获取项的类型数
    public int getViewTypeCount() {
        // TODO Auto-generated method stub
        return 2;
    }
   
    //获取View
    public View getView(int position, View convertView, ViewGroup parent) {
       
        ChatMsgEntity entity = data.get(position);
        boolean isComMsg = entity.getMsgType();
           
        ViewHolder viewHolder = null;   
        if (convertView == null)
        {
              if (isComMsg)
              {
                  //如果是对方发来的消息,则显示的是左气泡
                  convertView = mInflater.inflate(R.layout.chatting_item_msg_text_left, null);
              }else{
                  //如果是自己发出的消息,则显示的是右气泡
                  convertView = mInflater.inflate(R.layout.chatting_item_msg_text_right, null);
              }

              viewHolder = new ViewHolder();
              viewHolder.tvSendTime = (TextView) convertView.findViewById(R.id.tv_sendtime);
              viewHolder.tvUserName = (ImageView)convertView.findViewById(R.id.iv_userhead);
              viewHolder.tvContent = (TextView) convertView.findViewById(R.id.tv_chatcontent);
              viewHolder.isComMsg = isComMsg;
             
              convertView.setTag(viewHolder);
        }else{
            viewHolder = (ViewHolder) convertView.getTag();
        }    
        viewHolder.tvSendTime.setText(entity.getDate());
        viewHolder.tvContent.setText(entity.getText());
        int resID=entity.getName();
        Drawable numediscript = context.getResources().getDrawable(resID);
        viewHolder.tvUserName.setImageDrawable(numediscript);   
        return convertView;
    }
   
    //通过ViewHolder显示项的内容
    static class ViewHolder {
        public TextView tvSendTime;
        public ImageView tvUserName;
        public TextView tvContent;
        public boolean isComMsg = true;
    }
   
}

注意:头像通过传id的方式获得,int resID=entity.getName();
        Drawable numediscript = context.getResources().getDrawable(resID);
        viewHolder.tvUserName.setImageDrawable(numediscript);  

0 0