在Android的Listview中显示多种视图
在Android的Listview中显示多种视图
1.场景
在使用ListView时,我们经常遇到需要在一个ListView中显示多种视图的场景,例如:聊天软件的聊天界面中,自己发送的消息在左边显示自己的头像,别人发送的消息在右边显示别人的头像,等等。
2.ListView常用方式
2.1 ListView常用的Adapter有:ArrayAdapter,SimpleAdapter,CursorAdapter。在Android sdk sample的ApiDemo工程中有详细的使用方法。
2.2 当我们需要在ListView的视图中展示复杂的数据和资源,处理复杂的事件时,我们可以继承BaseAdapter,重写BaseAdapter中的方法来达到目的,主要是getView(int position, View convertView, ViewGroup parent)方法。在android sdk sample的ApiDemo工程中有详细的使用方法。
2.3 当我们需要在ListView中显示多种视图时,仍然使用继承BaseAdapter的方式,要注意的是getItemViewType(int position)和getViewTypeCount()这两个方法。
3.ListView中显示多种视图的实现方式
3.1 实现步骤
3.1.1 定义试图类型常量
相关源码下载在帮客之家的1号FTP服务器里,下载地址:
FTP地址:ftp://www.bkjia.com
用户名:www.bkjia.com
密码:www.muu.cc
在 2011年LinuxIDC.com\10月\10月\在Android的Listview中显示多种视图
下载方法见 http://www.bkjia.net/thread-1187-1-1.html
我们定义了三种:
- /**
- * 发送的消息
- */
- private static final int TYPE_SEND = 0;
- /**
- * 收到的消息
- */
- private static final int TYPE_RECEIVE = TYPE_SEND + 1;
- /**
- * 图片
- */
- private static final int TYPE_PIC = TYPE_RECEIVE + 1;
- public int getItemViewType(int position) {
- int type = super.getItemViewType(position);
- try
- {
- type = Integer.parseInt(data.get(position).get("type"));
- } catch (Exception e)
- {
- e.printStackTrace();
- }
- System.out.println("getItemViewType::" + position + " is " + type);
- return type;
- }
- public int getViewTypeCount() {
- System.out.println("getViewTypeCount is " + 3);
- return 3;
- }
由getItemViewType返回对应项的自定义视图类型,getViewTypeCount返回视图类型总数。
注意:getViewTypeCount返回的值必须比视图类型常量值大,以数组来比喻的话,getViewTypeCount返回的是数组的长度,getItemViewType返回的(即3.1.1中定义的常量)就是数组的下标。
|
评论暂时关闭