Android开发基础之Adapter

来源:互联网 发布:java二维数组 编辑:程序博客网 时间:2024/05/17 23:57

1, Adapter介绍

Adapter是用来帮助填充数据的中间桥梁,通过它可以将数据填充到ListView、GridView、Gallery。根据数据来源形式的不同可以选择不同的Adapter,例如,数据来源于一个Arraylist就使用BaseAdapter、SimpleAdapter。

2, Adapter的体系结构

一个Adapter的对象扮演一个桥梁的角色。这个桥梁连接着一个AdapterView和它所包含的数据。Adapter提供了一个通到数据项的途径。Adapter还负责为数据集里的每个数据项生成一个View。他有一个重要的方法getView,他的作用是得到一个显示数据项里知道文字的数据,

3, Adapter的使用

当复杂的数据需要通过复杂的View来显示时,Adapter是最实用、最方便的解决方案。常用的Adapter有ListAdapter、SimpleAdapter、ArrayAdapter和CursorAdapter,它们都继承自BaseAdapter,有各自的优缺点,通常在使用时需要针对功能的需求选择合适的Adapter并对其进行扩展。AdapterView是用来通过某种方式来显示重复的View对象的一类View的总称, AdapterView中会包含一系列的子View如ListView、GridView和GalleryView等。

下面用ArrayAdapter和SimpleAdapter来通过例子说明如何使用Adapter,它们可以快速地修改要绑定的控件的外观和功能。ArrayAdapter操作的是数组或List数据,它能够把数组的每一个元素与布局资源中单独的一个View绑定。
ArrayAdapter(Context context, int resource)
ArrayAdapter(Context context, int resource, int textViewResourceId)
ArrayAdapter(Context context, int resource, T[] objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
ArrayAdapter(Context context, int resource, List objects)
ArrayAdapter(Context context, int resource, int textViewResourceId, List objects)
Context:当前上下文
textViewResourceId:和数据绑定的View组件ID
resource:布局文件的ID
objects:和View组件绑定的数据
SimpleAdapter可以将List中的数据按照指定的顺序绑定到View组件,其构造方式为:
SimpleAdapter(Context context, List

        String[] data=new String[10];        for(int i=0;i<10;++i){            data[i]="text"+i;        }        ArrayAdapter arrayAdapter=new ArrayAdapter(                this,android.R.layout.simple_list_item_1,R.id.rowText,data        );        setListAdapter(arrayAdapter);

绑定了ArrayAdapter与ListView后,Android系统将自动识别ArrayAdapter中数据源的长度,并根据此长度创建ListView中的条目。

 String[] data1=new String[10];        String[] data2=new String[10];        for(int i=0;i<10;++i){            data1[i]="text1"+i;            data2[i]="text2"+i;        }         ArrayList<HashMap<String, Object>> list=new ArrayList<HashMap<String,Object>>();        for (int i=0;i<10;++i){            HashMap<String, String> map=new HashMap<>();            map.put("text01",data1[i]);            map.put("text02",data2[i]);            list.add(map);        }        SimpleAdapter simpleAdapter=new SimpleAdapter(this,list,android.R.layout.simple_list_item_1,                new String[]{"text01","text02"},new int[]{R.id.rowText,R.id.rowText2});        setListAdapter(simpleAdapter);

注意:SimpleAdapter的数据源是List类型的;from里的key值的顺序和to中ID值的顺序应该是一一对应。

0 0