SimpleCursorAdapter需要造作数据库,一般通讯录Contacts就是用这种适配器,就是从Cursor游标里取得的数据用ListView显示,并可以把指定的列表映射到TextView中(这里的TextView是android.R.layout.simple_expandable_list_item_1.xml),文件如下(系统自带的)
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
/>
Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);先获得一个指向系统通讯录数据库的Cursor对象获得数据来源。
startManagingCursor(cursor);我们将获得的Cursor对象交由Activity管理,这样Cursor的生命周期和Activity便能够自动同步,省去自己手动管理Cursor。
SimpleCursorAdapter
构造函数前面3个参数和ArrayAdapter是一样的,最后两个参数:一个包含数据库的列的String型数组,一个包含布局文件中对应组件id的int型数组。其作用是自动的将String型数组所表示的每一列数据映射到布局文件对应id的组件上。上面的代码,将NAME列的数据一次映射到布局文件的id为text1的组件上。
注意:需要在AndroidManifest.xml中如权限:<uses-permission
android:name="android.permission.READ_CONTACTS"></uses-permission>
否则会出错
本来想做一个可以显示联系人姓名和电话号码的例子,但是电话号码总是去不出来,运行就出错,1.5以后联系人的API跟以前的不一样,弄了一天,还是有很多错误,只能暂停了,以后再慢慢的去了解
SimpelCursorAdapterTest.java
/*
* @author loulijun
*/
package org.hualang.SimpleCursorAdapterTest;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.Contacts.People;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class SimpleCursorAdapterTest extends Activity {
/** Called when the activity is first created. */
private ListView listview;
private Cursor cursor;
private SimpleCursorAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listview=(ListView)findViewById(R.id.listview);
cursor=getContentResolver().query(People.CONTENT_URI, null, null, null, null);
startManagingCursor(cursor);
adapter=new SimpleCursorAdapter(this,
android.R.layout.simple_expandable_list_item_1,
cursor,
new String[] {People.NAME},
new int[] {android.R.id.text1});
listview.setAdapter(adapter);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
运行结果如下:
- 大小: 10.9 KB
分享到:
相关推荐
•Android---UI篇---Tab Layout(选项卡布局) • •Andorid---UI篇---TableLayout(表格布局) ...•Android---UI篇---ListView之SimpleCursorAdapter(列表)---3 • •Android---UI篇---Menu(菜单)
android-world-of-listview-android
Android-ListView-Example
MVC-ListView-DataModel-master.zipMVC-ListView-DataModel-master.zipMVC-ListView-DataModel-master.zipMVC-ListView-DataModel-master.zipMVC-ListView-DataModel-master.zipMVC-ListView-DataModel-master....
android--ListView实现带标题栏效果(附源码)
Android-react-native-timeline-listview.zip,React本机应用程序的时间线组件,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。
android--ListView实现聊天记录
Android--开发--ListView上下翻页效果
Android--开发-- ListView下拉刷新 Demo
android-ListView内嵌GridView
Android--开发--ListView保持在列表的顶部固定View 案例分析 源码
android-pulltorefresh-listview 下拉刷新ListView
Android--开发--ListView 中的item随意拖动
Android--开发--ListView 实现点击侧边A-Z快速查找
2-android-pulltorefresh-listview 下拉刷新ListView.zip
Android -- ListView 返回 第一条数据的实现.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
21.[开源][安卓][拖拽]drag-sort-listview-master DragSortListView(DSLV)是Android ListView的一个扩展,支持拖拽排序和左右滑动删除功能。重写了TouchInterceptor(TI)类来提供更加优美的拖拽动画效果。 DSLV...
Android-ListView监听上下滑动.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android-pro-listview.7z
android-custom-listview.7z