ListView:是Android中非常重要的一个控件,也是最麻烦的一个控件,今天就来初步来认识一下ListView。
一、ListView是什么?
ListView是一个控件,列表视图。将一些相同结构的视图批量显示。什么意思呢?如下所示:
一个空的ListView是什么样的呢?
代码如下:android:divider=“#0000ff” 为分割线的颜色
android:dividerHeight="3dp" 为分割线的粗细程度
效果图如下
通过上述图式可以知道:ListView就是将具有相同结构的视图批量显示,也就知道了ListView是什么。
平常开发中使用ListView的效果图
这样的单个称为:一个列表项
所有的列表项一起称为:ListView,列表视图
图中主要内容有:高德地图、美团、263云通信.... 不难 发现,每个列表项都只包含三个部分:ImageView:Icon(图片)、TextView:Text(显示文字)、TextView:Size(大小)。也是具有相同的结构。
二、ListView的作用是什么?
经过上面的分析,可以得知ListView有两大作用:①将所要展示的数据集合起来②以列表的形式展示到用户界面上
在使用ListView之前,还得搞清楚一个概念, Adapter
三、Adapter是什么?
Adapter:适配器,举个例子就明白适配器干嘛用的了,例如:家里只有两孔插座,但是你需要使用三孔插座,因而你从外面买来一根具有三孔的插座过来,这三孔插座的接头是两孔的,所以只需要将买的插座插在两孔插座上,就可以使用三孔插座了,这个例子中,你买来的三孔插座就相当于一个适配器。
四、在Android中Adapter(适配器)作用是什么呢?
①配置列表项布局
② 将需要的数据装配到ListView中的
明白了ListView和Adapter后,做一个小实例实现ListView的列表视图
步骤:
① 配置列表项布局(什么是列表项布局?就是上面所提到例子中Icon、Text、Size集中在一起所显示的样式布局,由ImageView、TextView、TextView结合在一起形成的布局)
② 初始化数据
③准备适配器:使用系统适配器或者自定义适配器。(今天使用系统适配器,在开发中使用最多的还是自定义适配器)
④ListView和适配器的的关联。ListView设置适配器,展示列表项,监听列表
项
例:效果如下:
①ListView(列表视图)
layout文件夹下
lisrview1.xml
②配置列表项布局
activity_main.xml (名字只是一个名字而已,随意取,不用纠结)
设置列表项布局效果如下: 也就是三个控件:ImageView、TextView、TextView
MainActivity.java中
setContentView(R.layout.listview1); //使用ListView。
ListView listview = (ListView) findViewById(R.id.app_ListView); //获取ListView对象,用来最后设置适配器。
③初始化数据:
1、使用Map集合保存在List中
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Icon,Value
name,value
size,value
将三个数据放入Map中,这样就成了一个列表项的数据,存入List中。有多少个列表项数据,就存多少个Map。
2、使用JavaBean保存数据,
List<APPInfo> data = new ArrayList<APPInfo>();
3、直接使用ArrayAdapter,这种方法就直接将第二、三步合在一起了。数据用的是字符串数组,适配器用的是系统自带的数组适配器。
第一个参数context: 上下文
第二个参数:列表项布局id,使用的是系统自带的布局
第三个参数:字符串数组保存的数据。
ArrayAdapter<String> arrayadapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
new String[]{"a","b","c","d"});
从这里可能有个疑惑,是选择第一种还是第二种呢?
这里我们选择第一种,因为可能一个工程有很多不同的列表项布局,不一定就只有ImageView、TextView、TextView这三个组合而成的布局,而是由十几种或者几十种,那么选择第二种初始化数据的话,将会要写几十个JavaBean,很麻烦,而第一种则更简便。
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
for(int i = 0; i < 10; i++){
HashMap<String,Object> map = new HashMap<String,Object>();
map.put("icon", R.drawable.emoji_095);
map.put("name", "应用"+i);
map.put("size", i+1);
data.add(map);
}
④适配器Adapter,今天先介绍系统自带的适配器,之后不久在介绍自定义适配器。ArrayAdapter(上面已经介绍了),重点在介绍SimpleAdapter(简单适配器)
介绍这五个参数:
1、Context:上下文
2、data:数据是什么,这里就是前面自己写的data
3、resource:列表项布局id
4、from:数据从data中哪里来,从map中相应的key中来
5、to:数据要填充到布局中的什么控件中去
SimpleAdapter simpleadapter = new SimpleAdapter(
this,
data,
R.layout.activity_main,
new String[]{"icon","name","size"},
new int[]{R.id.image,R.id.text1,R.id.text2});
⑤ListView装配适配器。展示数据
listview.setAdapter(simpleadapter);
如果要在每个列表项中添加监听器,
这样设置了监听器后,点击每一个列表项,都会提示吐司信息。
一、ListView是什么?
ListView是一个控件,列表视图。将一些相同结构的视图批量显示。什么意思呢?如下所示:
一个空的ListView是什么样的呢?
代码如下:android:divider=“#0000ff” 为分割线的颜色
android:dividerHeight="3dp" 为分割线的粗细程度
![图片](https://i-blog.csdnimg.cn/blog_migrate/d882e18bd3361392f0df58cfb29cb90c.png)
效果图如下
![图片](https://i-blog.csdnimg.cn/blog_migrate/f2f4e9b65385cd9cc1ed4d102087471d.png)
通过上述图式可以知道:ListView就是将具有相同结构的视图批量显示,也就知道了ListView是什么。
平常开发中使用ListView的效果图
![图片](https://i-blog.csdnimg.cn/blog_migrate/c53f3343263bd51d9529482d72ccd22b.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/e42f9692aad35f7ecedfc86ba08325c8.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/a1c13534be59dbd3fc37524cf6b47478.png)
这样的单个称为:一个列表项
所有的列表项一起称为:ListView,列表视图
图中主要内容有:高德地图、美团、263云通信.... 不难 发现,每个列表项都只包含三个部分:ImageView:Icon(图片)、TextView:Text(显示文字)、TextView:Size(大小)。也是具有相同的结构。
二、ListView的作用是什么?
经过上面的分析,可以得知ListView有两大作用:①将所要展示的数据集合起来②以列表的形式展示到用户界面上
在使用ListView之前,还得搞清楚一个概念, Adapter
三、Adapter是什么?
Adapter:适配器,举个例子就明白适配器干嘛用的了,例如:家里只有两孔插座,但是你需要使用三孔插座,因而你从外面买来一根具有三孔的插座过来,这三孔插座的接头是两孔的,所以只需要将买的插座插在两孔插座上,就可以使用三孔插座了,这个例子中,你买来的三孔插座就相当于一个适配器。
四、在Android中Adapter(适配器)作用是什么呢?
①配置列表项布局
② 将需要的数据装配到ListView中的
明白了ListView和Adapter后,做一个小实例实现ListView的列表视图
步骤:
① 配置列表项布局(什么是列表项布局?就是上面所提到例子中Icon、Text、Size集中在一起所显示的样式布局,由ImageView、TextView、TextView结合在一起形成的布局)
② 初始化数据
③准备适配器:使用系统适配器或者自定义适配器。(今天使用系统适配器,在开发中使用最多的还是自定义适配器)
④ListView和适配器的的关联。ListView设置适配器,展示列表项,监听列表
项
例:效果如下:
![图片](https://i-blog.csdnimg.cn/blog_migrate/0edc0e5f06254515ecde5dd9b39a3b13.png)
①ListView(列表视图)
layout文件夹下
lisrview1.xml
![图片](https://i-blog.csdnimg.cn/blog_migrate/588767fb2e7bf35ee8611c50c4ca860d.png)
②配置列表项布局
activity_main.xml (名字只是一个名字而已,随意取,不用纠结)
设置列表项布局效果如下: 也就是三个控件:ImageView、TextView、TextView
![图片](https://i-blog.csdnimg.cn/blog_migrate/53dbfe6098fdc5c0d2585476c2b3f590.png)
MainActivity.java中
setContentView(R.layout.listview1); //使用ListView。
ListView listview = (ListView) findViewById(R.id.app_ListView); //获取ListView对象,用来最后设置适配器。
③初始化数据:
1、使用Map集合保存在List中
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
Icon,Value
name,value
size,value
将三个数据放入Map中,这样就成了一个列表项的数据,存入List中。有多少个列表项数据,就存多少个Map。
2、使用JavaBean保存数据,
List<APPInfo> data = new ArrayList<APPInfo>();
3、直接使用ArrayAdapter,这种方法就直接将第二、三步合在一起了。数据用的是字符串数组,适配器用的是系统自带的数组适配器。
第一个参数context: 上下文
第二个参数:列表项布局id,使用的是系统自带的布局
第三个参数:字符串数组保存的数据。
ArrayAdapter<String> arrayadapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
new String[]{"a","b","c","d"});
从这里可能有个疑惑,是选择第一种还是第二种呢?
这里我们选择第一种,因为可能一个工程有很多不同的列表项布局,不一定就只有ImageView、TextView、TextView这三个组合而成的布局,而是由十几种或者几十种,那么选择第二种初始化数据的话,将会要写几十个JavaBean,很麻烦,而第一种则更简便。
List<Map<String,Object>> data = new ArrayList<Map<String,Object>>();
for(int i = 0; i < 10; i++){
HashMap<String,Object> map = new HashMap<String,Object>();
map.put("icon", R.drawable.emoji_095);
map.put("name", "应用"+i);
map.put("size", i+1);
data.add(map);
}
④适配器Adapter,今天先介绍系统自带的适配器,之后不久在介绍自定义适配器。ArrayAdapter(上面已经介绍了),重点在介绍SimpleAdapter(简单适配器)
介绍这五个参数:
1、Context:上下文
2、data:数据是什么,这里就是前面自己写的data
3、resource:列表项布局id
4、from:数据从data中哪里来,从map中相应的key中来
5、to:数据要填充到布局中的什么控件中去
SimpleAdapter simpleadapter = new SimpleAdapter(
this,
data,
R.layout.activity_main,
new String[]{"icon","name","size"},
new int[]{R.id.image,R.id.text1,R.id.text2});
⑤ListView装配适配器。展示数据
listview.setAdapter(simpleadapter);
![图片](https://i-blog.csdnimg.cn/blog_migrate/020eb5b05786e9c33049a8d06fc10f4b.png)
如果要在每个列表项中添加监听器,
![图片](https://i-blog.csdnimg.cn/blog_migrate/10e9100a4780df3e372325abd8343b27.png)
这样设置了监听器后,点击每一个列表项,都会提示吐司信息。