一、步骤

1、在layout创建两个布局,分别是自己的回答条,和对方的回答条。

2、创建ChatMessage这个类,成员变量有头像地址、聊天内容、所属类型(假设1表示对方,2表示自己)。

3、创建ChatBaseAdapter,故名思意继承BaseAdapter。就主要展示下getView()方法

 private ArrayList<ChatMessage> mChatMessages;

 @Override
public View getView(int position, View convertView, ViewGroup parent) {
ChatViewHolder chatViewHolder = null;
//获取当前View所处List容器中的数据
ChatMessage chatMessage = (ChatMessage)getItem(position);
if (convertView == null){
chatViewHolder = new ChatViewHolder();
//当为1的时候,创建对方布局
if (getItemViewType(position) == 1) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.adapter_left, parent, false);
chatViewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.left_iv_icon);
chatViewHolder.tvContent = (TextView) convertView.findViewById(R.id.left_tv_content);
}
//否则创建自己的布局
else {
convertView = LayoutInflater.from(mContext).inflate(R.layout.adapter_right, parent, false);
chatViewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.right_iv_icon);
chatViewHolder.tvContent = (TextView) convertView.findViewById(R.id.right_tv_content);
} convertView.setTag(chatViewHolder);
}
else {
chatViewHolder = (ChatViewHolder) convertView.getTag();
}
//输入数据
chatViewHolder.ivIcon.setImageResource(chatMessage.getPictureUrl());
chatViewHolder.tvContent .setText(chatMessage.getTextContent());
return convertView;
}

ChatBaseAdapter

同时BaseAdapter还提供以下方法,确定ListView显示的布局的类型

   @Override
public int getItemViewType(int position) {
return mChatMessages.get(position).getType();
} @Override
public int getViewTypeCount() {
return 2;
}

ChatBaseAdapter

ListView的使用——聊天窗口的更多相关文章

  1. UWP开发入门(八)——聊天窗口和ItemTemplateSelector

    我们平常用的最多的APP可能就是企鹅和微信了.有没有想过聊天窗口如何实现的?本篇我们将简单模拟一个聊天窗口. 聊天窗口大致上就是消息的一个集合列表.集合列表最常见的展现形式无非就是ListView.可 ...

  2. 张高兴的 UWP 开发笔记:横向 ListView

    ListView 默认的排列方向是纵向 ( Orientation="Vertical" ) ,但如果我们需要横向显示的 ListView 怎么办? Blend for Visua ...

  3. Android—万能ListView适配器

    ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...

  4. Android—ListView条目背景为图片时,条目间距问题解决

    ListView是android开发中使用最普遍的控件了,可有的listView条目的内容颇为丰富,甚至为了美观,背景用指定图片,如下图:

  5. Android中ListView实现图文并列并且自定义分割线(完善仿微信APP)

    昨天的(今天凌晨)的博文<Android中Fragment和ViewPager那点事儿>中,我们通过使用Fragment和ViewPager模仿实现了微信的布局框架.今天我们来通过使用Li ...

  6. listview下拉刷新和上拉加载更多的多种实现方案

    listview经常结合下来刷新和上拉加载更多使用,本文总结了三种常用到的方案分别作出说明. 方案一:添加头布局和脚布局        android系统为listview提供了addfootview ...

  7. Android listview和gridview以及view的区别

    GridView 可以指定显示的条目的列数. listview一般显示的条目的列数都是一列 如果是列表(单列多行形式)的使用ListView,如果是多行多列网状形式的优先使用GridView andr ...

  8. mono for android Listview 里面按钮 view Button click 注册方法 并且传值给其他Activity 主要是context

    需求:为Listview的Item里面的按钮Button添加一个事件,单击按钮时通过事件传值并跳转到新的页面. 环境:mono 效果: 布局代码 主布局 <?xml version=" ...

  9. 【腾讯Bugly干货分享】跨平台 ListView 性能优化

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/FbiSLPxFdGqJ00WgpJ94yw 导语 精 ...

随机推荐

  1. <%@ include file=""%>与<jsp:include page=""/>区别

    jsp页面是把include指令元素(<%@ include file=""%>)所指定的页面的实际内容(也就是代码段)加入到引入它的jsp页面中,合成一个文件后被js ...

  2. LFS,编译自己的Linux系统 - 包和补丁

    建立工作目录 我们先建立一个工作目录,用于存放下载的源代码和对源代码进行编译. sudo mkdir –v /mnt/lfs/sources sudo chmod –v a+wt /mnt/lfs/s ...

  3. js中document的用法

    document.title //设置文档标题等价于HTML的title标签document.bgColor //设置页面背景色document.fgColor //设置前景色(文本颜色)docume ...

  4. psutil官方文档

    psutil documentation¶ Quick links Home page Install Blog Forum Download Development guide What’s new ...

  5. 创建简单的ajax对象

    oAjax=               oAjax=                     oAjax.open('GET', url,                               ...

  6. ISBN-10和ISBN-13有什么区别?

    ISBN扩升至13位 1. 现有ISBN的结构 国际标准书号ISBN是英文International Standard Book Number的缩写,1971年国际标准化组织ISO(Internati ...

  7. Farming

    Problem Description You have a big farm, and you want to grow vegetables in it. You're too lazy to s ...

  8. 学习笔记之--Navicat Premium创建数据表

    1.打开Navicat Premium,点击连接,选择MySQL,创建新连接.输入安装MySQL是的用户名和密码.点击确定. 2.admin数据连接已经创建成功.下面为admin新建数据库,输入数据库 ...

  9. C语言随笔_fopen

    有同学问我,以下代码会输出“===”,为什么呀? if( (fp = fopen("data.dat","r"))==NULL){ printf("= ...

  10. mongodb数据库备份恢复

    MongoDB数据文件备份与恢复   备份与恢复数据对于管理任何数据存储系统来说都是非常重要的.   1.冷备份与恢复——创建数据文件的副本(前提是要停止MongoDB服务器),也就是直接copy  ...