Ich arbeite an meiner ersten Android-App und kann nicht herausfinden, wie ich meine SimpleCursorAdpater
um die Ansicht zu füllen. Der Cursor, den ich in übergeben hat Ergebnisse in es, so dass das Problem irgendwo in der Instanziierung des Adapters oder in der Bindung es an die Ansicht sein muss. Ich bin irgendwie am Ende meiner Weisheit, da keine Ausnahmen ausgelöst werden und ich kann nicht wirklich Schritt in setListAdapter.
So bekomme ich meinen Cursor überhaupt erst:
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);
Und das ist das Schema für meine Datenbank:
CREATE TABLE Searches (_id INTEGER PRIMARY KEY, Name Text, Search TEXT)
Hier sind die beiden Zeilen, in denen die Dinge beginnen, auseinanderzufallen:
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.search, cursor, FROM, TO);
setListAdapter(adapter);
Mein Hauptlayout sieht wie folgt aus:
<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" />
Hier ist die Ansicht, die mit jedem Ergebnis zu füllen ist:
<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>
Schließlich sind hier die statischen Variablen, die ich verwendet habe:
//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";
Ich denke, das ist der gesamte relevante Code. Ich habe keine Ahnung, wie man an dieser Stelle fortfahren, so dass alle Vorschläge überhaupt hilfreich sein würde.
Danke! Brian
PS: Sieht so aus, als gäbe es hier eine Menge toller Vorschläge - ich ignoriere sie nicht, ich hatte nur noch nicht die Gelegenheit dazu. Danke für die Ratschläge! Irgendwann werde ich sie alle durchgehen und versuchen, ein Feedback dazu zu geben, welche Dinge für mich gut funktioniert haben.