我正在處理我的第一個Android應用程序,但無法弄清楚如何讓我的SimpleCursorAdpater
填充視圖。我傳入的遊標導致它,所以問題必須在實例化適配器或將其綁定到視圖中。由於沒有拋出異常,我無法將 轉換爲setListAdapter。調試SimpleCursorAdapter
這是我如何得到我的光標在首位:
Searches searches = new Searches(this);
SQLiteDatabase db = searches.getReadableDatabase();
//select _id, Name, Search FROM Searches;
Cursor c = db.query(
SearchConstants.TABLE_NAME,
FROM, null, null, null,
null, null);
startManagingCursor(c);
這是架構做我的DB:
CREATE TABLE Searches (_id INTEGER PRIMARY KEY, Name Text, Search TEXT)
下面是兩行事情開始土崩瓦解:
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.search, cursor, FROM, TO);
setListAdapter(adapter);
我主要佈局是這樣的:
<ListView
android:id="@android:id/android:list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@android:id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/empty" />
這裏是填補與每個結果的看法:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10sp">
<TextView
android:id="@+id/_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/colon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=": "
android:layout_toRightOf="@id/name" />
<TextView
android:id="@+id/search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:textStyle="italic"
android:layout_toRightOf="@id/colon" />
</RelativeLayout>
最後這裏是我使用的靜態變量:
//search query stuff
private static String[] FROM = {SearchConstants._ID, SearchConstants.NAME_COLUMN, SearchConstants.SEARCH_COLUMN};
//where to paste search results
private static int[] TO = {R.id._id, R.id.name, R.id.search};
/**
* Table name
*/
public static final String TABLE_NAME = "Searches";
/**
* Name Column
*/
public static final String NAME_COLUMN = "Name";
/**
* Search Column
*/
public static final String SEARCH_COLUMN = "Search";
我想這是所有相關的代碼。我不知道如何在這一點上進行,所以任何建議都會有所幫助。
感謝, 布賴恩
PS:貌似那裏有很多很好的建議,在這裏 - 我不會無視他們,我只是還沒有過機會呢。感謝您的建議!在某些時候,我會穿過他們所有的人,試着給出一些反饋,告訴我哪些事情對我有好處。
你的模式是什麼樣的,你實際上有一個_ID列嗎?顯示您的模式以及用於填充遊標的實際數據庫查詢。 – schwiz 2010-10-28 02:26:36
我添加了模式和查詢。我傾向於認爲那不是問題,因爲在我創建適配器之前(這裏未顯示),我手動迭代結果,並確定有足夠的東西在那裏。我讀過你必須在你的FROM子句中包含_id,儘管我已經添加了它,這似乎有幫助(沒有例外),但仍然沒有結果。讓我知道,如果有其他事情會有所幫助!謝謝! – 2010-10-28 13:56:48
您確定您提供給SimpleCursorAdapter()的Cursor實例是否與至少有一行相同?您的發佈代碼中有兩個遊標變量,「遊標」和「c」。 – 2010-10-31 17:27:39