首页 > 代码库 > 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及其子类