对于ListView我是真的没有底气写,感觉它很简单很容易就实现了,也觉得它好复杂,一不小心满脸都是空指针,而且想要展现的效果更友好,代码就要更“高级”,要学的越来越多,感觉ListView是个无底洞,从它能延伸出好多知识点。。。
在这里先简单说说一下我做的三个小例子吧,都是比较简单的,灰常适合初学者初次接触ListView。。。。
一、ListView简单介绍
在Android开发中,ListView是比较常用的控件,它以列表的形式显示具体内容,并且能够根据数据的长度自适应显示。在ListView中可以根据需要显示自定义的列表内容,包括文字(TextView)、图片(ImageView)、按钮(Button)等,以此构成图文并茂的显示效果。
二、案例一——每行只有一个数据
先看效果图吧,我比较喜欢一上来就直接一点,哈哈哈:
这个例子就是展示一个列表,分别显示了四种水果,在点击列表某一行时,弹出改行的文字内容。
做起来很easy,主要是要用到Adapter(适配器),刚开始使用适配器的都对它比较敬畏,比如我。。。
1、我们先在主布局文件中加入ListView控件,如下:
我们规范的把它命名为mListView.
2、接下来,我们设置一个名为list.xml的布局文件,这个布局文件中主要用来设置我们希望的每行列表的布局。在这个例子中,我们只需要设置一个TextView来放我们的数据。
3、然后就开始设置Activity吧。
首先就是要声明一个ListView对象,然后findViewById找到我们在布局文件中设置的ListView控件;
然后用一个数组来放我们的数据;
接下来创建一个ArrayAdapter<String>即泛型为字符串类型的适配器对象,这个对象用来把我们的数据和列表绑定到一起。在适配器中我们要传入四个参数,第一个是上下文,第二个是列表布局文件,第三个参数是数据将要传入列表中的哪个控件,最后一个是数据源。
然后调用setAdapter将适配器赋给我们设置的ListView对象。
最后设置列表点击时间,设置监听,当用户点击列表时,我们用Toast弹出列表内容即可,这个内容实际上是从数据源中拿到的。
实际上,这个简单列表的用法和之前我们使用下拉框的情况很像,可以再回去参考复习一下。
三、案例二——每行中有多个数据
在实际的应用中,列表中常常会包含了各种数据,显然,上一个例子中一个列表中只有一个数据很不够用,那就再来学习一个一行中有两个数据的吧(捂脸哭),我们慢慢学习,不着急,毕竟智商有限。正如前文所说,稍微有点扩展,新知识随之而来(微笑脸)......HashMap这个东西说实话,从大学我就经常接触它,但是直到现在,我还是很怕使用它,理解的不深就会这样。。。
先看效果图:
,
我们在每一行设置了两个数据,第一个数据为姓名,第二个数据为手机号。
1、同上一个列子,先在主布局文件中设置一个ListView控件,代码和上一样,这里不再放了。
2、也同上,创建一个名为list.xml的布局文件,主要是用来设置每一行列表的样式。在这个例子中,我们为每一行设置两个水平的TextView,代码如下:
3、转到Activity开始捣鼓。。
在这段代码里,我们主要是在上个例子的基础上加入了HashMap这个功能。HashMap可以创建多个对象,每个对象又能根据不同的键保存不同的数据,这就很方便的让我们能把同一对象的多个信息属性绑到一个HashMap对象上。
所以使用HashMap的步骤就是先new一个对象,然后把数据put到对象中,接着把对象添加到list里,再用适配器把数据和列表绑到一起,这里用的SimpleAdapter适配器需要传入五个参数,第一个表示上下文,第二个是数据源,第三个是列表布局文件,第四个是键名,最后一个是键对应的列表中的控件id。
三、案例三——图片和文字并行
1、主Activity布局代码
2、写List_Item的布局
3、写Activity
4、看一下效果吧
这个例子和第二个例子很像,改动基本不大,举一反三就很容易理解啦。PS:请忽略我的图片和文字是否匹配,我只是拿来凑数的,并不知道这些车的牌子。。。