1.概念
Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系:
Android中所有的Adapter一览:
由图可以看到在Android中与Adapter有关的所有接口、类的完整层级图。在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展。比较常用的有 BaseAdapter,SimpleAdapter,ArrayAdapter,SimpleCursorAdapter等。
BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
ArrayAdapter支持泛型操作,最为简单,只能展示一行字。
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(ArrayListDemo.this,
android.R.layout.simple_list_item_1,adapterData);
这段代码是创建一个数组适配器的代码,里面有三个参数,
第一个参数是上下文,就是当前的Activity,
第二个参数是android sdk中自己内置的一个布局,它里面只有一个TextView,这个参数是表明我们数组中每一条数据的布局是这个 view, 就是将每一条数据都显示在这个view上面;
第三个参数就是我们要显示的数据。listView会根据这三个参数,遍历adapterData里面的每一条数据,读出一条,显示到第二个参数对应的布局中,这样就形成了我们看到的listView.
- SimpleAdapter有最好的扩充性,可以自定义出各种效果。
SimpleAdapter的构造函数:
SimpleAdapter(Context context, List<? extends Map<String, ?>> data,
int resource, String[] from, int[] to)
参数:
1,context:上下文。
2,data:基于Map的list。Data里边的每一项都和 ListView里边的每一项对应。Data里边的每一项都是一个Map类型,这个Map类里边包含了ListView每一行需要的数据。
3,resource :就是一个布局layout,可引用系统提供的,也可以自定义。
4,from:这是个名字数组,每个名字是为了在 ArrayList数组的每一个item索引Map
adapter = new SimpleCursorAdapter(
this, //上下文
R.layout.item_listview, //listview的item布局
null, //cursor
new String[] { columns[1], columns[2] }, // map的key值
new int[] { R.id.name,R.id.path }, //item布局控件名
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); //flag