`

【原创】android 实现气泡式listview

 
阅读更多
iphone中短信聊天都是那种气泡式的,当然,android短信也是,
那么我们如何实现这种效果呢?

我下面就简单的实现了一个demo,

其实就是一个listview,然后对adapter中getview的时候,根据自己的设定来获取不同的layout。
具体看代码:

public class MainActivity extends Activity {
	private ListView talkView;
	private ArrayList<DetailEntity> list = null;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        talkView = (ListView)findViewById(R.id.list);
        
        list = new ArrayList<DetailEntity>();
		DetailEntity d1 = new DetailEntity("Me","2012-04-26","Hello!",R.layout.list_say_me_item);
		list.add(d1);
		DetailEntity d2 = new DetailEntity("You","2012-04-26","Hi!",R.layout.list_say_he_item);
		list.add(d2);
		DetailEntity d3 = new DetailEntity("Me","2012-04-26","Waht is your name?",R.layout.list_say_he_item);
		list.add(d3);
		DetailEntity d4 = new DetailEntity("You","2012-04-26","****!",R.layout.list_say_me_item);
		list.add(d4);
        
        talkView.setAdapter(new DetailAdapter(MainActivity.this, list));
    }
}


然后是adapter了
public class DetailAdapter implements ListAdapter {
	private ArrayList<DetailEntity> coll;
	private Context ctx;

	public DetailAdapter(Context context, ArrayList<DetailEntity> coll) {
		ctx = context;
		this.coll = coll;
	}

	public boolean areAllItemsEnabled() {
		return false;
	}

	public boolean isEnabled(int arg0) {
		return false;
	}

	public int getCount() {
		return coll.size();
	}

	public Object getItem(int position) {
		return coll.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) {
		[color=red]DetailEntity entity = coll.get(position);
		int itemLayout = entity.getLayoutID();[/color]

		LinearLayout layout = new LinearLayout(ctx);
		LayoutInflater vi = (LayoutInflater) ctx
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		vi.inflate(itemLayout, layout, true);

		TextView tvName = (TextView) layout
				.findViewById(R.id.messagedetail_row_name);
		tvName.setText(entity.getName());

		TextView tvDate = (TextView) layout
				.findViewById(R.id.messagedetail_row_date);
		tvDate.setText(entity.getDate());

		TextView tvText = (TextView) layout
				.findViewById(R.id.messagedetail_row_text);
		tvText.setText(entity.getText());
		return layout;
	}

	public int getViewTypeCount() {
		return coll.size();
	}

	public boolean hasStableIds() {
		return false;
	}

	public boolean isEmpty() {
		return false;
	}

	public void registerDataSetObserver(DataSetObserver observer) {
	}

	public void unregisterDataSetObserver(DataSetObserver observer) {
	}

}


注意红色部分,获取到相应的layout。
就实现了气泡式的效果了。
效果图:

具体代码见附件。
  • 大小: 21.7 KB
分享到:
评论

相关推荐

    Android 实现气泡式listview

    通过以上步骤,你就能在Android应用中实现一个基本的气泡式ListView。不过,实际开发中可能还需要根据具体需求进行更多定制,比如添加图片、时间戳等复杂数据结构,或者实现更复杂的交互效果。总的来说,自定义...

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

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

    Android实现iphone圆角ListView和点击的效果

    在Android开发中,为了使应用界面更接近iOS的风格或者增加独特的用户体验,有时我们需要实现类似iPhone的圆角ListView以及点击效果。本篇文章将详细讲解如何在Android中复现这一功能。 首先,我们要创建一个带有...

    Android之用PopupWindow实现弹出listview形式的菜单

    在Android开发中,`PopupWindow`是一个非常实用的组件,它可以用来实现各种形式的弹出窗口,如下拉菜单、提示框等。本教程将详细讲解如何使用`PopupWindow`来创建一个以`ListView`形式展示的菜单。首先,我们需要...

    Android之ListView列表视图和界面跳转实现

    在Android开发中,ListView是一种非常常见的控件,用于展示大量数据的列表形式。它具有高度可定制性,能够实现各种自定义布局和交互效果。本教程将深入讲解如何实现一个基本的ListView,并在用户点击列表项时跳转到...

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

    本文将详细探讨如何在Android中使用ListView来实现这种汽泡短信聊天的效果。 首先,我们需要创建一个自定义的ListView适配器(Adapter)。适配器是连接数据源和ListView的关键组件,它负责解析数据并将其转化为...

    android studio实现listview的增加,左滑删除

    在本文中,我们将深入探讨如何在Android Studio中实现ListView的动态增加以及左滑删除功能,这将帮助你构建更加用户友好的应用程序。 首先,我们需要创建一个ListView的基础结构。在Android Studio中,打开布局XML...

    Android实现的ListView-ListViewAdapter(新闻列表事例)

    在这个“Android实现的ListView-ListViewAdapter(新闻列表事例)”中,我们将探讨如何利用ListView和ListViewAdapter来构建一个新闻列表,具体涵盖以下几个关键知识点: 1. **ListView**: ListView是Android SDK中的...

    Android自定义adapter的listview

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。为了实现更加灵活和丰富的界面展示,我们通常需要对ListView进行自定义,这涉及到自定义Adapter的使用。自定义Adapter允许我们根据需求...

    Android中实现listview气泡短信聊天

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

    Android的widget使用listview布局

    本教程将深入探讨如何在Android Widget中集成ListView布局,以便在小部件上展示动态、可滚动的数据。 首先,为了创建一个包含ListView的Android Widget,我们需要在`res/xml`目录下创建一个新的XML布局文件,例如`...

    Android 实现ListView滚动到底部自动加载数据

    总之,实现Android ListView滚动到底部自动加载数据涉及到的主要步骤包括:设置适配器、监听滚动事件、判断是否滚动到底部、加载新数据和更新列表。这个过程需要对Android的基础组件和数据操作有深入的理解,同时也...

    Android编程实现ListView中item部分区域添加点击事件功能

    本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能。分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在一个界面显示了listview,但显示的内容分为...

    android ListView 网格布局

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

    Android横向列表,横向listview实现

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

    Android实现ListView的增删改查Demo

    这个"Android实现ListView的增删改查Demo"是一个实战教程,旨在教你如何在Android应用中实现对ListView中的数据进行添加、删除、修改和查询操作。这个Demo通常会结合SQLite数据库来存储和管理数据,因为SQLite是...

    Android 实现圆角ListView实例

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。要实现一个具有圆角效果的ListView,我们需要结合自定义View、Drawable以及Adapter等技术来完成。本实例将详细介绍如何在Android中创建...

    Android Activity跳转和listview的使用

    理解Activity的跳转和ListView的使用是Android开发中至关重要的技能。在这个主题中,我们将深入探讨如何通过Intent和Bundle实现Activity间的参数传递和跳转,以及如何在ListView中设置Item的点击事件处理。 首先,...

    Android应用源码之ListView滚动气泡提示_Android.zip

    Android应用源码之ListView滚动气泡提示_Android

Global site tag (gtag.js) - Google Analytics