Day04

作者: HappyDemon | 来源:发表于2015-11-17 00:04 被阅读40次

    (1)ListView

    ListView(API)是一个AdapterView,它以列表的形式在Android上表现数据.

    Adapter它是一个适配器,是一个常见的ViewGroup容器,在这个容器中通常要借组一个适配器对象来加载数构建Item然后显示这些Item.

    基本上以上API都会用到这样的适配器,而且基本的原理是一样的.

    ListView与Adapter

    ListView主要负责以列表的形式显示数据,并根据需要从Adapter中获取列表项;

    Adapter主要负责获取数据,并将数据加工为列表项指定的表现形式,供ListView提取.

    通常我们指一个列表项为一个ItemView,一个ListView中可以有很多个ItemView.

    通过使用Adapter,可以让ListView不用关心列表项中的数据是怎么来、如何将这些数据添加到列表项中去等等问题,这样实现了数据与表现之间的低耦合.

    即同一个ListView控件匹配不同的Adapter则可以显示不同内容与样式,而同一个Adapter也可以为多ListView或其他的AdpaterView而使用

    显示一个ListView需要的基本条件

    • ListView控件:用于以列表的形式显示数据
    • 数据源:需要被显示的数据
    • Adapter(适配器):按需获取数据源中的数据,创建每一条显示的ItemView(列表项),并添加到ListView中(让ListView与Adapter)
      关联.
    • 列表项中的布局文件(Xml)

    (2)ArrayAdapter

    ArrayAdapter是简单的显示文字列表的Adapter,使用ArrayAdapter
    时,ListView的每一个列表项,仅能显示一条文字信息.

    ArrayAadapter传入的参数的说明

    ArrayAdapter adapter = new ArrayAdapter(Context context,int TextViewResourceId,List<T> Objects);
    

    Context context:上下问对象(MainActivity.this),一般都只写this.

    int TextViewResourceId:列表项的布局文件的资源ID,该布局文件必须是以TextView为根节点.一般我们可以用自定义的布局和Android官方给的布局.

    List<T> Objects:数据源,一般数据源可以定义在内部也可以定义在外部.

    AarrayAdapter代码实例流程

    //1.获取ListView控件
    ListView lv=(ListView)findViewById(R.id.lv);
    //2.构建ArrayAdapter对象,并往ArrayAdapter对象中传入参数
    ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_expandable_list_item_1,
                new String[]{"A","B","C","D","E"});
    //3.关联Adapter
    lv.setAdapter(adapter);
    

    (3)SimpleAdapter

    较之ArrayAdapter,使用SimpleAdapter的显示效果更加丰富,列表项不再收到限制,即每个列表项可以包括多个显示控件,不仅仅局限于TextView.

    SimpleAdapter的基本使用

    在使用SimpleAdapter时,数据源必须是List<?extends Map<String,?>>格式,在List内部的每一个Map对象保存一条列表项数据,在Map中的key为提取出数据的依据,Value为被提取的数据

    根据应用到的控件不同,该Map中的Value的意义有所区分,例如应用到TextView中时,该Value将直接作为文字显示,应用到ImageView时,该Value则可以被作为图片的资源ID.

    SimpleAdapter构造方法参数

    SimpleAdapter adapter = new SimpleAdapter(
                Content content,
                List<?extends Map<String,?>>,
                R.layout.simpleactivity,
                String[] form,
                int[] to);
    

    Content content:上下文对象

    List<?extends Map<String,?>>:数据源

    int Resource:列表项的布局文件的资源ID,该布局最好为自定义ID

    String[] form:数据源中Map的key的数组

    int[] to:显示数据的控件的资源ID,这些资源ID必须被第三个参数表示的的布局文件中定义,且数量、顺序必须与第四个参数保持一致.

    相关文章

      网友评论

          本文标题:Day04

          本文链接:https://www.haomeiwen.com/subject/vxnkhttx.html