微信对话框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);
- 微信对话框BaseAdapter的实现
- Android高效率实现弹出带动画效果的对话框,仿照微信对话框效果
- 实现自定义的BaseAdapter
- C#实现微信聊天对话框
- 用BaseAdapter实现的ListView
- BaseAdapter的封装和实现
- cocos2d-x 使用 CCScale9Sprite 实现微信对话框
- cocos2d-x 使用 CCScale9Sprite 实现微信对话框
- cocos2d-x 使用 CCScale9Sprite 实现微信对话框
- 【Android】使用BaseAdapter实现复杂的ListView
- 使用BaseAdapter实现复杂的ListView
- 【Android】使用BaseAdapter实现复杂的ListView
- ArrayAdapter和BaseAdapter的实现和区别
- 使用自定义的BaseAdapter实现 onitemclickListener
- Android之BaseAdapter的优雅实现
- BaseAdapter需实现的四个方法介绍
- 基于BaseAdapter的安卓百变Adapter实现
- 基于BaseAdapter的安卓百变Adapter实现
- Handler,Looper&&在异步线程中更新UI
- dubbo与spring mvc 整合 搭建
- 两个栈实现队列
- 详解Linux运维工程师必备技能
- PHP日期和时间处理
- 微信对话框BaseAdapter的实现
- 数据的网络请求
- java 实现word 转PDF (采用第三方技术 IText、Poi、Jsoup)
- 前端工程筹建NodeJs+gulp+bower
- 面向对象设计的SOLID原则
- 运维工程师必须掌握的基础技能有哪些?
- BZOJ3172单词
- SQL字符串转换为数组
- Linux文件系统