Ich habe eine Aktivität, wo ich Ergebnisse von einer Datenbank mit ListView anzeigen möchte. Die Tabelle besteht aus drei Spalten: Wort, Beschreibung und Kategorie. Auf der Aktivitätsseite habe ich eine Liste von Kategorien, die von einem Array gelesen werden. Ich möchte es so einrichten, dass, wenn Sie auf ein Element in der Liste klicken (zum Beispiel Kat1), die vom Cursor zurückgegebenen Ergebnisse alle Wörter/Beschreibungen mit der Kategorie Kat1 im DB sind. Derzeit habe ich einfach einen Toast mit dem Namen dieser Kategorie angezeigt, wenn Sie darauf klicken.Cursor Ergebnisse von DB in ListView nach OnItemClick anzeigen
Wie es jetzt ist, wird die Aktivität nicht ordnungsgemäß ausgeführt. Ich habe im Internet gelesen und bin mir nicht sicher, wie es weitergehen soll. Hier ist der Code, den ich bisher habe. Wenn mir jemand helfen kann, würde ich es sehr schätzen.
Öffentliche Klasse Kategorien erweitert ListActivity { DataBaseHelper db = new DataBaseHelper (this); private SQLiteDatabase-Daten; int position;
private ListView list;
private String[] categories = {
"C1", "C2", "C3", "C4",
"C5", "C6", "C7", "C8",
"C9", "C10", "C11", "C12"
};
@Override
public void onCreate(Bundle icicle){
super.onCreate(icicle);
setContentView(R.layout.cat_list);
list = (ListView)findViewById(R.id.cat_listing);
list.setAdapter(new ArrayAdapter<String>(this,
R.layout.categories, categories));
list.setTextFilterEnabled(true);
Cursor cursor = data.rawQuery("SELECT term, desc FROM words WHERE cat = '" + categories[position] + "'", null);
startManagingCursor(cursor);
String columns[] = new String[] { "term", "desc" };
int[] to = new int[] { R.id.cat_term, R.id.cat_desc };
SimpleCursorAdapter myAdapter = new SimpleCursorAdapter(this, R.layout.cat_result, cursor, columns, to);
this.setListAdapter(myAdapter);
list.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View view,
int position, long id){
CharSequence text = categories[position];
Toast toast = Toast.makeText(getApplicationContext(),
text, Toast.LENGTH_SHORT);
toast.show();
}
});
}
}
Siddharth, Das ist, was ich bereits habe, wenn Sie meinen Code angesehen haben.Ich habe Probleme damit, dass dieser Code ohne Fehler ausgeführt wird, während ich mache, was ich getan habe. Können Sie die gesamte Quelle anstatt eines Auszuges posten? Verwenden Sie sogar OnItemClick? Danke ... – Devin
Hinzufügen des zusätzlichen Codes. Überprüfen Sie den ursprünglichen Beitrag. –
Es tut mir wirklich leid, aber ich habe Probleme hier. Ich verstehe, was bei der Vorbereitung des Cursors und bei der Erstellung eines SimpleCursorAdapters eine Rolle spielt. Ich möchte jedoch keine neue Aktivität. Ich möchte es so, wenn jemand auf ein Element in der Liste klickt, wird es die Datenbank abfragen und eine Liste aller Wörter in der Kategorie zurückgeben, auf die geklickt wurde. Ich habe den Code, den Sie gepostet haben, ausprobiert, und am Ende muss ich gezwungen werden, den Vorgang zu beenden, wenn ich diese Aktivität öffne (ich kann nicht einmal zur Kategorie-Liste gelangen, um zu testen). Der Code, den ich oben geschrieben habe, funktioniert, wenn Sie die SimpleCursorAdapter-Deklaration und den SetListAdapter-Aufruf in der nächsten Zeile entfernen. – Devin