Post

【Android】Adapter适配器

  • 用于将各种数据以合适的形式显示在View中给用户看,为ListView, Spinner等控件设置数据
  • 每行都是一个布局

1.ArrayAdapter

构造器:

(1)

1
2
public ArrayAdapter(Context context, int resource, List<T> objects);
public ArrayAdapter(Context context, int resource, T[] objects);

使用系统提供的布局,resource为布局ID。

ListView可使用android.R.layout.simple_list_item_1(只有一个TextView)

Spinner可使用R.layout.support_simple_spinner_dropdown_item(只有一个TextView,需要添加v7兼容包)、android.R.layout.simple_spinner_item或android.R.layout.simple_spinner_dropdown_item(不需要兼容包)

其他的系统提供的布局:

  • simple_list_item1: 单独的一行文本框
  • simple_list_item2: 有两个文本框组成
  • simple_list_item_checked: 每项都是由一个已选中的列表项
  • simple_list_item_multiple_choice: 都带有一个复选框
  • simple_list_item_single_choice: 都带有一个单选框

(2)

1
2
public ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects);
public ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects);

使用自定义的布局,resource为自定义布局ID,如R.id.my_layout,对应res/layout下的布局文件my_layout.xml。

注意:使用自定义的布局必须指定文本框组件的ID(第3个参数),即数据objects放到哪里,否则程序会停止运行。

2.SimpleAdapter

构造器:

1
2
public SimpleAdapter(Context context, List<? extends Map<String, ?>> data,
            int resource, String[] from, int[] to);
  • data: Map<String, Object>的列表,每一个Map对应一行,有多个<”key”, value>对
  • resource: 自定义布局ID,同上
  • from: Map中”key”的所有取值集合
  • to: 显示数据的控件ID集合

如果from[i]==”key”,则数据data[i].get(“key”)将被放入控件to[i]

This post is licensed under CC BY 4.0 by the author.