Android开发学习之Adapter(数据适配器)

1.定义

    数据适配器是AdapterView视图(如ListView - 列表视图控件、Gallery - 缩略图浏览器控件、GridView - 网格控件、Spinner - 下拉列表控件、AutoCompleteTextView - 自动提示文本框、ExpandableListView - 支持展开/收缩功能的列表控件等)与数据之间的桥梁,用来处理数据并将数据绑定到AdapterView上。

2.作用

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

3.分类

    包括ArrayAdapter(数组适配器)以及SimpleAdapter(简单适配器)。其中:

  1. ArrayAdapter用于绑定格式相对单一的数据,数据源主要是集合或者数组;
  2. SimpleAdapter用于绑定格式复杂的数据,数据源只能是泛型的集合;

4.实现

  1. 新建适配器;
  2. 添加数据源到适配器;
  3. 视图加载适配器;

5.案例

(1)具体用到的类:

  1. ArrayAdapter(上下文,当前ListView加载的每一个列表所对应的布局文件,数据源)
  2. SimpleAdapter(context,data,resource,from,to)其中,context:上下文,data数据源(List<? extends Map<String,?>> data)一个Map所组成的List集合) 每一个Map都会去对应ListView列表中的一行 每一个Map(键-值对)中的键必须包含所有在from中所指定的键,resource:列表项的布局文件ID,from:Map中的键名(String[]格式),to:绑定数据视图中的ID,与from成对应关系(int[]格式);

(2)代码实例:

  • ArrayAdapter

ListView listView;
    ArrayAdapter arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_violet);
        listView = (ListView) findViewById(R.id.listView);
        String[] data={"苹果","香蕉","桃子","西瓜"};
        arrayAdapter=new ArrayAdapter(this,R.layout.abc_simple_dropdown_hint,data);//上下文,当前ListView加载的每一个列表所对应的布局文件,数据源)
        listView.setAdapter(arrayAdapter);
}

  • SimpleAdapter

ListView listView;
    SimpleAdapter simpleAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_violet);
        listView = (ListView) findViewById(R.id.listView);
        List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
        String[] persons = {"张老师", "陈老师", "李老师", "黄老师"};
        String[] phoneNums = {"18706218201", "18706214521", "13908761231", "18512390812"};
        for (int i = 0; i < persons.length; i++) {
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("username", persons[i]);
            map.put("phoneNum", phoneNums[i]);
            //插入图片
            map.put("photo",R.drawable.cc);
            data.add(map);
        }
        //(context,data,resource,from,to)
        simpleAdapter = new SimpleAdapter(this, data, R.layout.list_item, new String[]{"username","photo", "phoneNum"}, new int[]{R.id.username,R.id.photo, R.id.phoneNum});
        listView.setAdapter(simpleAdapter);
    }

猜你喜欢

转载自www.linuxidc.com/Linux/2015-08/121309.htm