Android adapter设计模式三:聊天界面
发布日期:2021-06-30 22:37:31
浏览次数:2
分类:技术文章
本文共 4759 字,大约阅读时间需要 15 分钟。
1.效果图:
2.说明:
getViewTypeCount返回的就是种类数目了; getItemViewType根据当然Item的position决定返回不同的整型变量。然后在getView中,根据消息的类型去加载不同的Item布局即可。3.源码:
package com.example.android_robot_01;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import com.example.android_robot_01.bean.ChatMessage;import com.example.android_robot_01.bean.ChatMessage.Type;public class ChatMessageAdapter extends BaseAdapter{ private LayoutInflater mInflater; private ListmDatas; public ChatMessageAdapter(Context context, List datas) { mInflater = LayoutInflater.from(context); mDatas = datas; } @Override public int getCount() { return mDatas.size(); } @Override public Object getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } /** * 接受到消息为1,发送消息为0 */ @Override public int getItemViewType(int position) { ChatMessage msg = mDatas.get(position); return msg.getType() == Type.INPUT ? 1 : 0; } @Override public int getViewTypeCount() { return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { ChatMessage chatMessage = mDatas.get(position); ViewHolder viewHolder = null; if (convertView == null) { viewHolder = new ViewHolder(); if (chatMessage.getType() == Type.INPUT) { convertView = mInflater.inflate(R.layout.main_chat_from_msg, parent, false); viewHolder.createDate = (TextView) convertView .findViewById(R.id.chat_from_createDate); viewHolder.content = (TextView) convertView .findViewById(R.id.chat_from_content); convertView.setTag(viewHolder); } else { convertView = mInflater.inflate(R.layout.main_chat_send_msg, null); viewHolder.createDate = (TextView) convertView .findViewById(R.id.chat_send_createDate); viewHolder.content = (TextView) convertView .findViewById(R.id.chat_send_content); convertView.setTag(viewHolder); } } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.content.setText(chatMessage.getMsg()); viewHolder.createDate.setText(chatMessage.getDateStr()); return convertView; } private class ViewHolder { public TextView createDate; public TextView name; public TextView content; }}
4、相关实体类:
package com.example.android_robot_01.bean;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;public class ChatMessage{ /** * 消息类型 */ private Type type ; /** * 消息内容 */ private String msg; /** * 日期 */ private Date date; /** * 日期的字符串格式 */ private String dateStr; /** * 发送人 */ private String name; public enum Type { INPUT, OUTPUT } public ChatMessage() { } public ChatMessage(Type type, String msg) { super(); this.type = type; this.msg = msg; setDate(new Date()); } public String getDateStr() { return dateStr; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); this.dateStr = df.format(date); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Type getType() { return type; } public void setType(Type type) { this.type = type; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; }}
5、布局文件
主界面消息的显示是一个ListView,不过这个listView中的Item有两种风格,一个是左边的绿色消息,一个是右边的白色消息 左边的消息布局文件:右边的和左边基本一致,就不贴了,最后会给出代码。
源码下载:
链接: 密码:wr8w———————————————————————
有需求者请加qq:136137465,非诚勿扰 (java 架构师全套教程,共760G, 让你从零到架构师,每月轻松拿3万) 01.高级架构师四十二个阶段高 02.Java高级系统培训架构课程148课时 03.Java高级互联网架构师课程 04.Java互联网架构Netty、Nio、Mina等-视频教程 05.Java高级架构设计2016整理-视频教程 06.架构师基础、高级片 07.Java架构师必修linux运维系列课程 08.Java高级系统培训架构课程116课时 (送:hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门) ——————————————————————–转载地址:https://lovoo.blog.csdn.net/article/details/51556495 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月08日 01时35分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
培训班老师说可以用这个干掉一大批面试者
2019-04-30
阿里四面,居然栽在一道排序算法上
2019-04-30
【Java编码规范】《阿里巴巴Java开发手册(正式版)》发布!
2019-04-30
如何在二三线城市月薪过万(一)看完这篇后端简历优化,包你面试不断
2019-04-30
阿里P8大神教你十分钟构建好SpringBoot + SSM框架 成功晋升
2019-04-30
膜拜!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了
2019-04-30
Linux 常用命令
2019-04-30
Android之Handler机制篇
2019-04-30
Android之RecyclerView篇
2019-04-30
Android之Retrofit基本用法篇
2019-04-30
Netty与网络协议资料整理
2019-04-30
Golang相关资源整理
2019-04-30
设置Golang的开发环境
2019-04-30
对HTTP/2的部分理解
2019-04-30
Golang 逃逸分析
2019-04-30
golang实现大数据量文件的排序
2019-04-30
golang中的time包
2019-04-30
golang fmt包中的占位符
2019-04-30