2011年9月15日 星期四

Android學習_SimpleCursorAdapter的使用

之前有將一個已經組好的list倒入SimpleAdapter顯示,但我們使用SQLite時,若已經取得了一個Cursor,如果還要以上述的方式重新整理成一個list,就顯得有些不方便,所以我們需要的是另一個繼承於BaseAdapter的SimpleCursorAdapter。

首先,觀察一下SimpleCursorAdapter所需要的變數,共有五個:
1. Content(content)
2. Layout(int)
3. Cursor(Cursor)
4. from(String[])
5. to(int[])

由參數大致上就可以了解用法了,與其他的Adapter相同,我們可以先準備一個定義好的layout,並且將當中諸如textview等物件都放置好;並且以SQLite的Select方式獲得一個Cursor,最後將對應要顯示的內容以一個字串陣列的方式輸入from變數,程式碼如下:
1. 定義一個Layout(Android xml檔案)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<CheckedTextView android:id="@+id/listTextView1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="2px"
android:layout_height="2px"
android:textColor="@drawable/green"
android:visibility="invisible"
>
</CheckedTextView>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<CheckedTextView android:id="@+id/listTextView_t"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@drawable/Orange"
android:textSize="40px"
>
</CheckedTextView>

<CheckedTextView android:id="@+id/listTextView2"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@drawable/green"
android:textSize="40px"
>
</CheckedTextView>
</LinearLayout>

<CheckedTextView android:id="@+id/listTextView3"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@drawable/gray"
android:textSize="25px"
>
</CheckedTextView>

<CheckedTextView android:id="@+id/listTextView4"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@drawable/gray"
android:layout_marginRight="10px"
android:textSize="20px"
>
</CheckedTextView>

</LinearLayout>
</LinearLayout>

2. Java程式碼:

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.listview_mitem,
OnedayCursor, new String[] { "_id","item","money","datevlaue","type" }, new int[] {
R.id.listTextView1,R.id.listTextView2,R.id.listTextView3,R.id.listTextView4 ,R.id.listTextView_t});
RecordListView.setAdapter(adapter);

說明:
1. R.layout.listview_mitem為剛剛定義的layout
2. OnedayCursor為查詢出來的Cursor
3. new String[] { "_id","item","money","datevlaue","type" }為要顯示的欄位,必須要對應OnedayCursor查詢時所定義的欄位名稱。
4. new int[] {
R.id.listTextView1,R.id.listTextView2,R.id.listTextView3,R.id.listTextView4 ,R.id.listTextView_t}最後一個則是指上述欄位應擺放到的物件為何,也就是layout裡面放的物件。


如此,我們就可以很輕鬆的將Cursor的內容,利用ListView展示出來。

所以不管是
一維陣列:Android學習_ArrayAdapter的使用
自行處理的二維陣列:Android學習_SimpleAdapter的使用
Cursor的處理:Android學習_SimpleCursorAdapter的使用(也就是本篇)
我們都可以將各項資訊放置到希望的位置。

5 則留言:

William Hsu 提到...

一系列三篇拜讀完之後,
真是讓我茅塞頓開,太感謝了 ^^

KURO 提到...

非常感謝你的教學阿 !對我幫助非常多

ola的家 提到...

:D

匿名 提到...

謝謝分享
那請listview呈現出來後,要按下去做動作該如何寫呢?

Kris Fang 提到...

謝謝分享

張貼留言