首页 > 代码库 > Android从零单排之Adapter及其子类
Android从零单排之Adapter及其子类
Adapter--适配器,相信大家在开发中少不了用这个类或者它的子类。本人也在很多地方都用到,所以在这里总结一下。
Adapter扮演了一个桥梁的角色,把AdapterView和数据源板绑定一起。AdapterView是什么呢?它其实就是一个view,只不过是一种需要在代码中动态设置内容的view,而不是像其他的button,imageview等组件一样,可以在xml文件中指定属性和显示的数据。
下面看一下Adapter和AdapterView的类图:
我们一般使用的AdapterView的子类有:ListView、GridView、Gallery、Spinner等,使用最多的Adapter(适配器)有ArrayAdapter、SimpleAdapter、SimpleCursorAdapter、BaseAdapter等。
使用adapter一般需要三步:
1. 在布局文件中设置好你所使用的AdapterView的相关属性。
2. 在代码中使用适配器(adapter及其子类)对AdapterView进行适配。此时就可以正常显示了。
3. 添加监听器,对AdapterView的一些触发事件进行处理。
下面我就这四个适配器进行详细的解释一下。
一、ArrayAdapter
这是一种最简单的Adapter,通常将数组或list集合包装成多个列表项。我们就以ListView为例。
先看布局文件:
<!-- android:divider="#f00" 设置分割线的颜色 android:dividerHeight="2dp" 设置分割线的高度 android:stackFromBottom="true" 设置列表显示的时候显示到最下面的列表 android:scrollbars="none" 隐藏滚动条 android:fadeScrollbars="false" 为false时滚动条一直显示,为true时自动显示隐藏 --> <ListView android:id="@+id/array_adapter_lv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#1d953f" android:divider="#f00" android:listSelector="#E9967A" android:dividerHeight="2dp" android:headerDividersEnabled="false" android:transcriptMode="alwaysScroll" > </ListView>
java代码部分:
private void initListView1() { listView1 = (ListView) findViewById(R.id.array_adapter_lv1); String[] arr1 = new String[] { "item1", "item2", "item3" }; ArrayAdapter<String> adapter1 = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arr1); listView1.setAdapter(adapter1); }
ArrayAdapter的构造函数有很多,我用的是三个参数的那个,下面来解释一下参数的含义。
- Context:表示访问android应用的接口
- textViewResourceId: 资源ID,代表了一个TextView,这个TextView作为ArrayAdapter的列表项组件。
- 数组或者List:为多个列表项提供数据。
其中,第二个参数比较重要,可以使用系统提供的布局文件,也可以自己定义(必须以TextView为根标签),如下:
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="12pt" android:textColor="#8DB6CD" android:text="TextView" />
然后在代码中,指定自己定义的xml文件就可以了。
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.array_adapter_item, getResources().getStringArray(R.array.array1));
二、SimpleAdapter
三、SimpleCursorAdapter
四、BaseAdapter
Android从零单排之Adapter及其子类