码迷,mamicode.com
首页 > 移动开发 > 详细

Android——Adapter

时间:2016-08-10 19:10:43      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

Adapter——本身只是一个接口。Adapter是将数据绑定到UI界面上的桥接类。Adapter负责创建显示每个项目的子View和提供对下层数据的访问。

 

数据适配器作用:把复杂的数据(数组、链表、数据库、集合等)填充在指定视图界面上。

数据适配器是连接数据源和视图界面的桥梁

 

介绍一下最常用的三个实现类:

1、ArrayAdapter:简单易用,通常用于将数组或List集合的多个值包装成多个列表项。每个列表项只能是TextView。

实现过程:新建适配器——添加数据源到适配器——视图加载适配器

//定义一个数组
    String[] arr1 = {"aa","bb","cc"};
        //将数组包装为ArrayAdapter
        ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,R.layout.array_item,arr1);
        //为ListView设置Adapter
        list.setAdapter(adapter1);//list为ListView组件

创建ArrayAdapter时必须指定如下三个参数:

Context:代表了访问整个Android应用的接口

textViewResourceId:一个资源ID,该资源ID代表了一个TextView,该TextView组件将作为ArrayAdapter的列表项组件。(控制每个列表项组件)

数组或List:该数组或List将负责为多少列表项提供数据。(为列表项提供数据)

 

2、SimpleAdapter:功能强大,可用于将List集合的多个对象包装成多个列表项

实现过程:新建适配器——添加数据源到适配器——视图加载适配器

举个小例子:一个列表项包含:最左边为图标,接着同一行上边是标题,下面是一些说明文字。

先定义了三个数组,分别存储上述三类。

    //创建一个List集合,List集合的元素是Map

    List<Map<String,Object>> listItems = new ArrayList<Map<String, Object>>();
    for(int i =0;i<names.length;i++){
        Map<String,Object> listItem = new HashMap<String,Object>();
        listItem.put("header",imageIds[i]);
        listItem.put("name",names[i]);
        listItem.put("desc",descs[i]);
        listItems.add(listItem);
    }
    //创建一个SimpleAdapter
    SimpleAdapter simpleAdapter = new SimpleAdapter(this,listItems,R.layout.simple_item,
            new String[]{"name","header","desc"},new int[]{R.id.name,R.id.header,R.id.desc});
    ListView list = (ListView) findViewById(R.id.mylist);
    list.setAdapter(simpleAdapter);

五大参数解释:

Context:上下文

data:数据源。是一个List<? extends Map<String,?>>类型的集合对象,该集合中每个Map<String,?>对象生成一个列表项

Resource:列表项的布局文件ID

from:Map中的键名

to:绑定数据视图中的ID,与from成对应关系

 

3、BaseAdapter:通常用于被扩展。扩展BaseAdapter可以对各列表项进行最大限度的定制。

 

Android——Adapter

标签:

原文地址:http://www.cnblogs.com/jingmengxintang/p/5756971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!