CursorAdapter是个抽象类,一般用他的直接子类simplecursorAdapter,废话少说上代码:
ListView lv = (ListView)this.findViewById(R.id.listview);
Cursor cur = this.getContentResolver().query(Contacts.People.CONTENT_URI, null, null, null, null);
Log.v("1111", cur.getColumnCount()+"no");
SimpleCursorAdapter sca = new SimpleCursorAdapter(this,R.layout.listviewitem,cur,new String[]{Contacts.People.NAME},new int[]{R.id.text});
lv.setAdapter(sca);
由于CursorAdapter是关联数据库里的数据的,这里呢可以直接用联系人电话簿来做测试调用方法this.getContentResolver().query()可以获得一个cursor的对象,可以理解成一个查询的结果记录集,可以把这个例子和simplecursor的例子对比来看生成simplecursorAdapter对象时传的参数意义就很明显了,最后两个参数可以理解成将对应的记录集里的名子显示到listviewitem的id为text的控件上。
本例子需要在AndroidManifest.xml文件中添加permission不然没法读取电话簿内容,如下:
<uses-permission android:name= "android.permission.READ_CONTACTS"></uses-permission>
Listviewitem.xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text"
>
</TextView>
</LinearLayout>
Main.xml文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation ="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:layout_width ="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/listview"
></ListView>
</RelativeLayout>