Android中的列表,当然也可以用ListView来完成所需要的功能,用法是一样的。

废话不说,来关键的。

LiveActivity本身继承了关于List操作的众多接口,我们可以方便的重写这些操作中需要的方法来实现自己需要的功能。

如果要用ListActivity,则 Activity的Layout文件中必须包括一个(只能一个)ListView,且ListView的id= "@id/android:list"。

如下代码,一个标准的ListActivity Layout文件:

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:paddingLeft="8dp"

android:paddingRight="8dp">

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#00FF00"

android:layout_weight="1"

android:drawSelectorOnTop="false"/>

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#FF0000"

android:text="No data"/>

请注意 ListView与TextView的id。前面说了,

1. ListView的Id为固定不变的,为"@id/android:list“,ListActivity会根据id自动查找ListView引用;在 Activity 中使用 setListAdapter(adapter); 时就默认设置到了这个list上。如果按一般控件的写法 ,则需要 findViewById 先得到控件对像,再调用对像的 setListAdapter(adapter);

2. 但如果当ListView中没有值而又想提示一句话时,那么用于指定显示提示信息的TextView的id 必须为”"@id/android:empty",提示的信息可以通过android:text进行指定。

在实际中,也可以这样写,如Android2.3中的call_detail.xml中:

android:layout_height="match_parent"

android:scrollbarStyle="outsideOverlay"

/>

android:layout_width="match_parent"

android:layout_height="match_parent"

android:fillViewport="true">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/unknown"

android:textSize="20sp"

android:textColor="?android:attr/textColorSecondary"

android:paddingLeft="10dip"

android:paddingRight="10dip"

android:paddingTop="10dip"

android:gravity="center"

android:lineSpacingMultiplier="0.92"/>

这个写法更加实用了,可以通过在listview没有显示数据时可以用@+id/emptyText进行动态赋值,而不用像前一个例子中的将empty text固化到xml中。

OK,关于如何布局说完了,那么如何给List绑定值,并进行操作呢?

首先我们需要确实的是,ListView的布局也完成了,并通过调用setContentView(…)进行了绑定,但直到现在我们还没有确定ListView中的第一行显示的格式是什么,是直接显示文字还是要“图文并茂”的显示。

Android系统为我们提供了多种模板进行选择(android.R.layout),如

Ø Simple_list_item_1 每项有一个TextView

Ø Simple_list_item_2 每项有两个TextView

Ø Simple_list_item_checked 带CheckView的项

Ø Simple_list_item_multiple_choise 每项有一个TextView并可以多选

Ø Simple_list_item_single_choice 每项有一个TextView,但只能进行单选。

但然,如果以上项模板还无法满足你的要求,那只能自定义模板了(相当简单,就是定义一个layout布局)。如果你做的asp.net的开发的话,是否对dataList控件有印象呢。如果对DataList有印象,那么理解ListView也就相当的简单了。

自定义模板可以根据自己的需要定义成任意的格式,包括图片、方案及其他可显示的View,不用多说,自己定义就好了,关键是如果使用并进行模板的绑定。

如何要对ListView进行数据绑定,必须使用到一个接口:Adapter。

其中最经常与ListView进行配合使用的有ArrayAdapter、 CursorAdapter及SimpleAdapter等。

从名称可以看出ArrayAdapter使用的是一个ArrayAdapter做为数据源,SimpleCursorAdapter使用的是一个Cursor使用数据源,都比较容易理解,那么如何使用SimpleAdapter作为数据的适配器呢。Ok,从易到难。

ArrayAdapter:

String[] data = { "Item1", "Item2",

"Item3", "Item4", "Item5" };

listView.setAdapter(new ArrayAdapter(this,

android.R.layout.simple_list_item_single_choice, data));

SimpleCursorAdapter:

//从数据库中查询Cursor

cursor = adapter.getAllNotes();

startManagingCursor(cursor);

//设置要显示的数据源中的列名(需要包含在cursor中)

String[] from = new String[] { DiaryDbAdapter.KEY_COLUMN_TITLE,

DiaryDbAdapter.KEY_COLUMN_CREATEED };

//显示的View(自定义模板中的View)

int[] to = new int[] { R.id.txtRowTitle, R.id.txtRowCreateed };

//绑定

SimpleCursorAdapter notes = new SimpleCursorAdapter(this,

R.layout.diaryrow, cursor, from, to);

setListAdapter(notes);、

SimpleAdapter:

SimpleAdapter将一个List做为数据源,可以让ListView进行更加个性化的显示。而List中的第一项是个Map(用到泛型),其中Map中的每项将与ListView中的每项进行一一对应绑定。Ok,看一下构造:

SimpleAdapter(Context context,List Extends Map> data,int resource,String [] form, int [] to);

² Context:当前上下文,一般把Activity.this传递进行。

² Data: 数据源。

² Resource: 自定义的layout模板资源,可以用 R.layout.xxx获取引用。

² Form: 定义ListView中的每一项数据索引,索引来自于Map,即指定要显示的内容。

² To:View数组,在ListView模板中的定义View,与Form中需要一一对应。

事例代码:

List> listContent

= new ArrayList>();

for (int i = 0; i

Hashtable table

= new Hashtable();

table.put("name", deviceList.get(i).Name);

table.put("address", deviceList.get(i).Address);

table.put("type", deviceList.get(i).Type + "");

listContent.add(table);

}

adapter = new SimpleAdapter(HeartActivity.this,

listContent, R.layout.child, //自定义的layout

new String[] { "name", "address" },

new int[] {R.id.txtDeviceName, R.id.txtDeviceAddress });

setListAdapter(adapter);

以上代码使用了Hashtable做为一个Map,并添加到一个List>当中。

之后new一个SimpleAdapter,注意SimpleAdapter是如何生成的。

android:id = @+id 用法,@+id/android:list和@android:id/list的写法相关推荐

  1. android唯一设备标识、设备号、设备ID的获取方法

    ##如何获取Android设备唯一ID? ###问题 每一个android设备都有唯一ID吗?如果有?怎么用java最简单取得呢? ###回答1(最佳) 如何取得android唯一码? 好处: 1.不 ...

  2. android代码获取deviceid,获取安卓系统的设备id用getDeviceId()函数

    来源:网络 | 2012-12-18 | (有12829人读过) 贴段具体例子代码,用来说明,安卓系统下,如何获取设备id的一段小例子供大家参考: 在计算机上,我们习惯用MAC地址来标志一台计算机.在 ...

  3. android 颜色 数组,在Android中声明维数,颜色,资源ID或其他非标准数据类型的数组?...

    我发现自己希望创建Android似乎本不支持的值的xml数组,并且正在寻找解决此问题的一些方法.当前,如果你希望在XML中声明一个值的数组,你仅限于字符串,整数和一个通用的非类型化"数组&q ...

  4. Android 一种关于解决 No view found for id xxxx for fragment xxxx 问题的方案

    一.问题描述 因为一直在参加比赛开发一款 APP ,然后今天在测试的时候发现了一个问题,即当打开进入 APP 后,走过以下路径 近期记录-->班级-->打开班级详情-->个人中心-- ...

  5. Android之Adapter用法总结

    本文转自http://kb.cnblogs.com/a/2328334/,转载请注明原出处. Android之Adapter用法总结 作者:Devin Zhang  来源:博客园  发布时间:2012 ...

  6. Android的Adapter用法总结

    Android之Adapter用法总结 1.Adapter概念   定义为将一个类的接口变换成客户端所期待的一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作.   在androi ...

  7. Android webservice的用法详细讲解

    Android webservice的用法详细讲解 看到有很多朋友对WebService还不是很了解,在此就详细的讲讲WebService,争取说得明白吧.此文章采用的项目是我毕业设计的webserv ...

  8. Android状态选择器用法总结

    原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6284682.html 本文首先列出常见状态选择器的创建,然后按照常用控件来分别列出状态选择器的具体 ...

  9. Android ListView常用用法(结合长按、数据库等)

    http://www.iteye.com/topic/540423 ListView是比较常用的控件,但一直都觉得创建ListView步骤有点繁琐,故在此总结一下,方便查阅. 程序效果是实现一个Lis ...

  10. Android ListView常用用法(二)

    来自:51CTO论坛 原帖:http://mobile.51cto.com/android-254823.htm Android开发:实现带图片和checkbox的listview 项目要用到一个li ...

最新文章

  1. centos创建vsftpd虚拟用户
  2. CentOS7路由、端口和服务排障常用命令
  3. python 有趣的变量_Python进阶之路 3.2有趣的赋值操作
  4. 下行物理信道rs_基于大规模MIMO技术的中继协作物理层安全研究
  5. 处理时间_4_计算时间列所在的周的序号
  6. 423. 从英文中重建数字
  7. darknet集成遇到的问题以及解决方法
  8. 使用$.post和action或servlet交互 URL出现 http://localhost:8080/../[object%20Object] 错误的问题解决
  9. python高阶函数map reduce filter sorted_【Python入门】7.高阶函数之 map( )、reduce( )、filter( )、sorted( )的用法...
  10. Maven仓库—Nexus环境搭建及使用
  11. libsvm 实现多分类原理
  12. dicom文件的后缀_DCM文件扩展名 - 什么是.dcm以及如何打开? - ReviverSoft
  13. 收据模板_使用智能收据简化支出报告
  14. xray搭建代理服务器
  15. 转录组测序day 1 基础知识
  16. KunlunBase 产品使用和评测指南
  17. SpringBoot发送QQ邮件图片显示不出来
  18. Dr.com 新版 Ver 5.2.0 本地 密码 读取 查看 破解
  19. STM32F103系列GPIO的一些基本概念和知识
  20. python虚拟跑步机

热门文章

  1. java UCnter 单点登录 对接。
  2. 重写方法,重载方法,虚方法和抽象方法的使用
  3. 浅谈Java回调机制
  4. Fedora17安装SSH
  5. WinForm里ListBox实现加入项目,并且排序。
  6. 使用 XML Schema 定义元素的基本知识--1
  7. 国内版Office 365和Azure AAD绑定的问题及解决方案
  8. 关于cell中添加子视图 复用重叠问题的解决方法
  9. 基于Go语言实现高并发推荐系统架构设计
  10. 【报告分享】2020解读中国互联网:局部领先、快进的数字化发展.pdf(附下载链接)...