如前文http://blog.csdn.net/xiaowei_cqu/article/details/7045497
我们进行了SimpleAdapter适配器初次尝试,那么离实现我们最终想要的效果也不远啦,只要仿照chata的布局,再编写第二位聊天人(“路人甲”)的布局chatb——只要让他靠右显示就行~。
但是这样我们每次都要很麻烦的定义一遍SimpleAdapter,为了“偷懒”,我们直接来编写自己的Adapter,这样每次定义就方便多了。
先附上最终的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
chatlist = (ListView) findViewById(R.id.chatlist);
list = new ArrayList<ChatEntity>();
ChatEntity chat1=new ChatEntity("小魏","嗨~",R.layout.chata);
list.add(chat1);
ChatEntity chat2=new ChatEntity("路人甲","你好!",R.layout.chatb);
list.add(chat2);
ChatEntity chat3=new ChatEntity("小魏","我是小魏~",R.layout.chata);
list.add(chat3);
chatlist.setAdapter(new ChatAdapter(TryChatPop2Activity.this,list));
}
如上代码,在setAdapter时使用了自己的ChatAdapter,以下是类文件代码:
public class ChatAdapter implements ListAdapter{
private ArrayList<ChatEntity> list;
private Context ctx;
public ChatAdapter(Context context ,ArrayList<ChatEntity> list) {
ctx = context;
this.list = list;
}
public boolean areAllItemsEnabled() {
return false;
}
public boolean isEnabled(int arg0) {
return false;
}
public int getCount() {
return list.size();
}
public Object getItem(int position) {
return list.get(position);
}
public long getItemId(int position) {
return position;
}
public int getItemViewType(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ChatEntity entity = list.get(position);
int itemLayout = entity.getLayoutID();
LinearLayout layout = new LinearLayout(ctx);
LayoutInflater vi = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vi.inflate(itemLayout, layout,true);
TextView txvName = (TextView) layout.findViewById(R.id.txvName);
txvName.setText(entity.getName());
TextView txvText = (TextView) layout.findViewById(R.id.txvInfo);
txvText.setText(entity.getInfo());
return layout;
}
public int getViewTypeCount() {
return list.size();
}
public boolean hasStableIds() {
return false;
}
public boolean isEmpty() {
return false;
}
public void registerDataSetObserver(DataSetObserver observer) {
}
public void unregisterDataSetObserver(DataSetObserver observer) {
}
}
ChatAdapterd的类实现了ListAdapter的接口,并通过ChatEntity中的内容设置了定义布局中聊天对象名字txvName及聊天内容txvInfo的内容,当然你肯定能明白ChatEntity就是存放聊天信息等内容的实体类。
这里我们可以这样写,就是因为ListAdapter的接口是绑定Data和ListView的适配器,实际上我们常用的ArryaAdapter、SimpleAdapter、CursorAdapter就是他的子类。
关系如下:
这样再看代码,甚至再回头看SimpleAdapter就感觉好理解多了,其他内容不细说了,具体参照源码:http://download.csdn.net/detail/xiaowei_cqu/3886321
再上一遍效果图:

分享到:
相关推荐
总之,实现汽泡短信聊天效果需要结合自定义适配器、数据模型、布局文件和一些UI调整。理解ListView的工作原理以及如何通过适配器和布局文件来定制视图是关键。在实际开发中,可以参考给出的博客链接或其他在线教程,...
Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...
总的来说,这个项目展示了如何在Android平台上利用ListView和自定义Adapter来实现一个功能完善的树状结构,这对于学习Android UI设计和数据适配器模式是非常有价值的实践。通过分析源码,开发者可以深入理解Android...
在Android开发中,构建一个类似微信的气泡短信...综上所述,实现Android中的气泡短信聊天功能涉及到了多个层次的技术,包括UI设计、数据结构、性能优化等。通过熟练掌握这些知识点,可以创建出高效、美观的聊天界面。
Android学习笔记-采用ListView实现数据列表显示-以及各种适配器使用-和如何写.pdf
在Android开发中,Widget是应用在主屏幕上的小型UI组件,它们可以提供用户与应用...这就是如何在Android Widget中使用ListView布局的简要概述。通过实践和调整,你可以根据项目的具体需求进一步定制和优化这个功能。
总结来说,实现Android的ListView嵌套ListView需要理解ListView的工作机制,创建并管理两个Adapter,以及在布局文件中正确地嵌套ListView。这虽然不是特别高深的技术,但却是Android开发中常见的需求,熟练掌握能...
总之,实现Android的ListView侧滑效果是一项实用的UI设计技巧,它需要理解触摸事件处理、自定义布局以及适配器的使用。通过合理的代码组织和优化,我们可以创建出高效且用户体验良好的通讯录应用。
本教程将深入探讨如何在Android中利用ListView来实现一个聊天记录的界面。 一、ListView的基本概念 ListView是Android SDK中的一个视图容器,它能够显示一列可滚动的项目列表。每个列表项可以由自定义的View或布局...
本文将详细讲解如何使用ListView来实现一个精美的聊天界面,参照"第一行代码"中的示例。 首先,我们需要理解ListView的基本用法。ListView通过Adapter来绑定数据,Adapter是连接ListView和数据源的桥梁。常见的...
总之,Android的横向ListView实际上是通过RecyclerView实现的,通过设置LinearLayoutManager的水平方向,配合自定义Adapter和手势检测,我们可以创建出功能强大的横向滚动列表。这种布局方式广泛应用于各种场景,如...
本文将深入探讨如何在Android中实现一个基于ArrayAdapter的网格布局ListView。 首先,我们要了解ListView的基本结构。ListView是由多个列表项(List Item)组成的,每个列表项通常对应一个View。在Android中,我们...
Android应用源码使用listView实现的树状结构.zip项目安卓应用源码下载Android应用源码使用listView实现的树状结构.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目...
本示例源码“Android应用源码使用listView实现的树状结构”旨在教你如何利用ListView创建具有层次感的树形结构,这对于组织分类信息或者构建导航菜单非常有用。我们将探讨以下几个关键知识点: 1. **ListView基础**...
本教程将深入讲解如何在Android中使用ListView来实现表格布局,以及如何进行自定义以满足可变长度的表格布局需求,并添加简单的行组件单击事件。 首先,要实现基本的表格布局,我们需要创建一个自定义的列表项布局...
综上所述,实现"android开发商城首页listview实现"这一功能,需要对Android的基础组件、数据绑定、事件处理以及性能优化有深入理解。通过巧妙组合和自定义,可以创建出具有丰富交互和良好性能的商城首页。在实际项目...
本文将详细介绍如何在Android中使用ListView实现嵌套的可折叠效果。 首先,我们需要了解基本的ListView工作原理。ListView通过Adapter来绑定数据源,Adapter负责将数据转化为ListView可显示的View。在Android中,...
本篇文章将详细讲解如何在Android中利用ListView实现表格效果。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来绑定数据,Adapter是连接数据源和视图的桥梁。我们可以通过自定义Adapter来定制...
"listview 实现仿QQ聊天记录"这个话题旨在教你如何利用ListView来创建一个类似QQ聊天界面的效果,这种界面通常包括时间轴、不同用户的对话气泡以及相关的头像等元素。下面将详细介绍实现这一功能所需的关键知识点。 ...