Android从零单排之Adapter及其子类

版权所有,禁止匿名转载;禁止商业使用。

Adapter--适配器 ,相信大家在开发中少不了用这个类或者它的子类。本人也在很多地方都用到,所以在这里总结一下。

Adapter扮演了一个桥梁的角色,把AdapterView和数据源板绑定一起。AdapterView是什么呢?它其实就是一个view,只不过是一种需要在代码中动态设置内容的view,而不是像其他的button,imageview等组件一样,可以在xml文件中指定属性和显示的数据。

下面看一下Adapter和AdapterView的类图:

ryuiuiM.pngABZbye.jpg 

我们一般使用的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

0 0