Android提供的三种adapter主要有ArrayAdapter,SimpleAdapter,SimoleCuisorAdapter是简单的字符串适配器,simpleAdapter是可以自定义子View布局的,可以有图片,SimpleCursor主要用语数据库,前两个的数据来源一般都是String[]或者List,后一个数据来源一般是数据库查询得到的Cuesor 而我们自定义用的最多的还是继承自SimpleAdapter。
介绍一下三种主要的adapter:
1.CursorAdapter继承于BaseAdapter,它是个虚类,它为cursor和ListView提供了连接的桥梁。它的数据是与Cursor绑定的。它提供两个抽象函数newView和bindView给派生类特制化:newView生成自定 义的View,bindView为自定义View绑定数据。所以我们继承CursorAdapter时,只需要实现这两个函数即可。
2.ResourceCursorAdapter 继承于CursorAdapter,它包含LayoutInflater对象,可以把xml转化成view。成员函数newView和 newDropDownView,根据构造函数初始化时传入或是setViewResource设置的资源id,产生对应的view并返回。
3.SimpleCursorAdapter继承于CursorAdapter,通过游标访问数据库。
一、arrayAdapter的代码实现
要求:使用数组适配器输出相对应的数据到ListView中
1、首先、创建Android工程,后在布局文件中定义一个ListView,并且设置好相关属性:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
2、其次、在activity类中书写代码,具体请看代码,并且代码上有相关的注释
package com.mqz.android_arrayadapter;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
private ListView listView; //定义ListView用来获取到,布局文件中的ListView控件
private String[] city = {"广州","深圳","北京","上海","香港","澳门","天津"} ; //定义一个数组,作为数据源
private ArrayAdapter<String> arrayAdapter; //定义一个数组适配器对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.listView); //获取布局文件中的ListView控件对象
/*
* Context context, 上下文对象
* int resource, items项显示的布局样式,一般是系统的布局文 android.R.layout.** (但是需要选择和ListView相适合的布局文件否则运行报错)
* String[] objects 数组对象(数据源)
*
* */
//创建数组适配器对象,并且通过参数设置类item项的布局样式和数据源
arrayAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, city);
//把数组适配器加载到ListView控件中
listView.setAdapter(arrayAdapter);
}
}
3、运行结果:这样不需要我们自己定义TextView控件中的内容,通过数组适配器实现了这一个目的。