`

【Android学习笔记】使用ListView实现汽泡短信聊天

 
阅读更多

小魏原创,欢迎转载~
转载请注明出处:http://blog.csdn.net/xiaowei_cqu/article/details/7045543

如前文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

再上一遍效果图:




分享到:
评论

相关推荐

    Android中使用ListView实现汽泡短信聊天

    总之,实现汽泡短信聊天效果需要结合自定义适配器、数据模型、布局文件和一些UI调整。理解ListView的工作原理以及如何通过适配器和布局文件来定制视图是关键。在实际开发中,可以参考给出的博客链接或其他在线教程,...

    Android学习笔记(十)——实现新闻列表

    Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...

    安卓Android源码——使用listView实现的树状结构.zip

    总的来说,这个项目展示了如何在Android平台上利用ListView和自定义Adapter来实现一个功能完善的树状结构,这对于学习Android UI设计和数据适配器模式是非常有价值的实践。通过分析源码,开发者可以深入理解Android...

    Android中实现listview气泡短信聊天

    在Android开发中,构建一个类似微信的气泡短信...综上所述,实现Android中的气泡短信聊天功能涉及到了多个层次的技术,包括UI设计、数据结构、性能优化等。通过熟练掌握这些知识点,可以创建出高效、美观的聊天界面。

    Android学习笔记-采用ListView实现数据列表显示-以及各种适配器使用-和如何写.pdf

    Android学习笔记-采用ListView实现数据列表显示-以及各种适配器使用-和如何写.pdf

    Android的widget使用listview布局

    在Android开发中,Widget是应用在主屏幕上的小型UI组件,它们可以提供用户与应用...这就是如何在Android Widget中使用ListView布局的简要概述。通过实践和调整,你可以根据项目的具体需求进一步定制和优化这个功能。

    android的listview嵌套listview,列表嵌套列表 android studio版本

    总结来说,实现Android的ListView嵌套ListView需要理解ListView的工作机制,创建并管理两个Adapter,以及在布局文件中正确地嵌套ListView。这虽然不是特别高深的技术,但却是Android开发中常见的需求,熟练掌握能...

    Android使用listview实现通讯录侧滑效果.rar

    总之,实现Android的ListView侧滑效果是一项实用的UI设计技巧,它需要理解触摸事件处理、自定义布局以及适配器的使用。通过合理的代码组织和优化,我们可以创建出高效且用户体验良好的通讯录应用。

    android--ListView实现聊天记录

    本教程将深入探讨如何在Android中利用ListView来实现一个聊天记录的界面。 一、ListView的基本概念 ListView是Android SDK中的一个视图容器,它能够显示一列可滚动的项目列表。每个列表项可以由自定义的View或布局...

    android listview聊天界面实现

    本文将详细讲解如何使用ListView来实现一个精美的聊天界面,参照"第一行代码"中的示例。 首先,我们需要理解ListView的基本用法。ListView通过Adapter来绑定数据,Adapter是连接ListView和数据源的桥梁。常见的...

    Android横向列表,横向listview实现

    总之,Android的横向ListView实际上是通过RecyclerView实现的,通过设置LinearLayoutManager的水平方向,配合自定义Adapter和手势检测,我们可以创建出功能强大的横向滚动列表。这种布局方式广泛应用于各种场景,如...

    android ListView 网格布局

    本文将深入探讨如何在Android中实现一个基于ArrayAdapter的网格布局ListView。 首先,我们要了解ListView的基本结构。ListView是由多个列表项(List Item)组成的,每个列表项通常对应一个View。在Android中,我们...

    Android应用源码使用listView实现的树状结构.zip项目安卓应用源码下载

    Android应用源码使用listView实现的树状结构.zip项目安卓应用源码下载Android应用源码使用listView实现的树状结构.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目...

    Android应用源码使用listView实现的树状结构.zip

    本示例源码“Android应用源码使用listView实现的树状结构”旨在教你如何利用ListView创建具有层次感的树形结构,这对于组织分类信息或者构建导航菜单非常有用。我们将探讨以下几个关键知识点: 1. **ListView基础**...

    Android中使用ListView实现表格形式的部局

    本教程将深入讲解如何在Android中使用ListView来实现表格布局,以及如何进行自定义以满足可变长度的表格布局需求,并添加简单的行组件单击事件。 首先,要实现基本的表格布局,我们需要创建一个自定义的列表项布局...

    android开发商城首页listview实现

    综上所述,实现"android开发商城首页listview实现"这一功能,需要对Android的基础组件、数据绑定、事件处理以及性能优化有深入理解。通过巧妙组合和自定义,可以创建出具有丰富交互和良好性能的商城首页。在实际项目...

    android listview嵌套listview实现折叠列表

    本文将详细介绍如何在Android中使用ListView实现嵌套的可折叠效果。 首先,我们需要了解基本的ListView工作原理。ListView通过Adapter来绑定数据源,Adapter负责将数据转化为ListView可显示的View。在Android中,...

    Android中ListView实现表格效果

    本篇文章将详细讲解如何在Android中利用ListView实现表格效果。 首先,我们需要理解ListView的工作原理。ListView通过Adapter来绑定数据,Adapter是连接数据源和视图的桥梁。我们可以通过自定义Adapter来定制...

    listview 实现仿QQ聊天记录

    "listview 实现仿QQ聊天记录"这个话题旨在教你如何利用ListView来创建一个类似QQ聊天界面的效果,这种界面通常包括时间轴、不同用户的对话气泡以及相关的头像等元素。下面将详细介绍实现这一功能所需的关键知识点。 ...

Global site tag (gtag.js) - Google Analytics