您的位置:首页 > 移动开发 > Android开发

Android15之控件ListView(初识)

2016-05-24 12:16 288 查看
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);



                       

如果要在每个列表项中添加监听器,

        


这样设置了监听器后,点击每一个列表项,都会提示吐司信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: