android : listview: get cursor-Wert auf item klicken
Erstelle ich eine Datenbank und eine Tabelle (Kategorien) mit den Spalten (_id, title, ...)
Ich will Lesen Kategorien aus der db und anzeigen der Kategorie-Liste als listview.
hier ist y-code:
public class MainActivity extends listActivity{
private ArrayAdapter arrayAdapter;
ArrayList results = new ArrayList();
ListView catlist;
Cursor cur;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
catlist = getListView();
int parentid = getIntent().getIntExtra("catid", 0);
openAndQueryDatabase(parentid);
displayCatListView();
}
private void displayCatListView() {
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, results));
catlist.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
final int position, long id) {
Toast.makeText(MainActivity.this,
"List View Clicked:" + position, Toast.LENGTH_LONG)
.show();
}
});
}
private void openAndQueryDatabase(int parentid) {
DataBaseHelper db = new DataBaseHelper(this);
SQLiteDatabase dbr = db.getReadableDatabase();
cur = dbr.rawQuery(
"SELECT _id, title, has_sub FROM categories where parent_id=?",
new String[] { String.valueOf(parentid) });
if (cur != null) {
while (cur.moveToNext()) {
int cat_id = cur.getInt(cur.getColumnIndex("_id"));
String cattitle = cur.getString(cur.getColumnIndex("title"));
int has_sub = cur.getInt(cur.getColumnIndex("has_sub"));
results.add(cat_id + cattitle + has_sub);
}
cur.close();
}
db.close();
}
}
1) ich kann die position onItemClick. aber ich möchte Kategorie _id onItemClick. bitte helfen Sie
2) ich bin der neue. gibt es irgendwelche Fehler in meinen codes ?
vielen Dank
InformationsquelleAutor | 2013-07-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Statt
erstellen Sie eine Kategorie-Klasse, um diese Werte enthalten, und verwenden Sie eine parametrisierte ArrayList. So etwas wie
und
Mit diesem können Sie die onItemClickListener als solche:
Deine ArrayList ist die Datenquelle in Ihrer ArrayAdapter, und
position
entspricht dem index des angeklickten Kategorie.class Category { public int cat_id; public String cattitle; public int has_sub; public Category(int cat_id, ...) { // constructor logic here } }
oder link ein komplettes Beispiel?danke 🙂 mein problem gelöst
Könnten Sie bitte zeigen um eine vollständige Anleitung zur Verwendung-Objekt anstelle von arraylist?
Meine obige code verwendet die Originale ArrayList in Ji.Mack ' s code zu halten Instanzen der Kategorie-Klasse. Wir brauchen also Objekte mit einer ArrayList, nicht statt.
gute Arbeit Dank......
InformationsquelleAutor ErikR
Verwenden CursorAdapter(http://developer.android.com/reference/android/widget/CursorAdapter.html) statt, wenn Sie mit ArrayAdapter es überschreiten, memory allocation, und auch Sie würden nicht erhalten Benachrichtigungen, wenn die db geändert.
Darüber hinaus im Falle der Verwendung von CursorAdapter haben Sie
"id" param Zustimmen wird Tabelle _id Feld
um die gesamte Zeile nur tun
nie neue id funktioniert auf diese Weise. +1 für diese nützliche info.
InformationsquelleAutor Andrew Matuk