H
Heppy1985
Neues Mitglied
- 0
Hallo ich habe mir ein ListView mit vier spalten erstellt und mit Daten aus der Datenbank aufgefüllt.
Jetzt würde ich gerne wenn ich einen Eintrag anklicke diesen in der Datenbank ändern können.
Das Problem was ich jetzt habe ist das wenn ich auf einen Eintrag anklicke dann wird immer die ganze Zeile ausgewählt und leider nicht nur dieser eine Spalten Inhalt.
Im Grunde sollte wenn ich in reihe 4 die Spalte Kunde auswähle dann will ich diesen Eintrag und nur diesen Eintrag ausgegeben bekommen am besten mit der zugehörigen Datenbank id.
Sollte es Verbesserungsvorschläge was den Code angeht geben bin ich auch ganz Ohr
Jetzt würde ich gerne wenn ich einen Eintrag anklicke diesen in der Datenbank ändern können.
Das Problem was ich jetzt habe ist das wenn ich auf einen Eintrag anklicke dann wird immer die ganze Zeile ausgewählt und leider nicht nur dieser eine Spalten Inhalt.
Im Grunde sollte wenn ich in reihe 4 die Spalte Kunde auswähle dann will ich diesen Eintrag und nur diesen Eintrag ausgegeben bekommen am besten mit der zugehörigen Datenbank id.
Code:
public void stundenListeAusgeben (SQLiteDatabase db) {
// Datenbank abfragen und Daten in ListenDaten ausgeben
ArrayList listenDaten = dbHelfer.heutigeStundenListeAbfragen(db);
if (listenDaten != null) {
// Listen ausgabe Definieren und erzeugen
String[] spaltenNamen = new String[]{"azAnfang", "azEnde", "kunde", "bericht"};
final ListView liste = (ListView) findViewById(R.id.liste_az_anfang);
int[] spalteIds = new int[]{R.id.spalte_az_anfang, R.id.spalte_az_ende, R.id.spalte_kunde, R.id.spalte_bericht};
final SimpleAdapter arrayAdapter =
new SimpleAdapter(this, listenDaten, R.layout.stundenliste, spaltenNamen, spalteIds);
liste.setAdapter(arrayAdapter);
liste.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getApplicationContext(), ""+liste.getItemAtPosition(position), Toast.LENGTH_SHORT).show();
}
});
}
}
Code:
public static ArrayList heutigeStundenListeAbfragen(SQLiteDatabase db) {
final String SQL_ALLE_AZ_ANFANG =
"SELECT " +
db_struktur.TabStunden.SPALTE_AZ_ANFANG + ", " +
db_struktur.TabStunden.SPALTE_AZ_ENDE + ", " +
db_struktur.TabStunden.SPALTE_KUNDE + ", " +
db_struktur.TabStunden.SPALTE_BERICHT +
" FROM " + db_struktur.TabStunden.TABELLEN_NAME;
Cursor cursor = db.rawQuery(SQL_ALLE_AZ_ANFANG, null);
// Datenbank daten in ListenDaten umwandeln
ArrayList<HashMap<String, String>> listenDaten = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
map = new HashMap<String, String>();
map.put("azAnfang", cursor.getString(0));
if (cursor.getString(1) != null) {
map.put("azEnde", cursor.getString(1));
} else {
map.put("azEnde", "- - -");
}
if (cursor.getString(2) != null) {
map.put("kunde", cursor.getString(2));
} else {
map.put("kunde", "- - -");
}
if (cursor.getString(3) != null) {
map.put("bericht", cursor.getString(3));
} else {
map.put("bericht", "- - -");
}
listenDaten.add(map);
} while (cursor.moveToNext());
}
cursor.close();
} else {
listenDaten = null;
}
return listenDaten;
}
Sollte es Verbesserungsvorschläge was den Code angeht geben bin ich auch ganz Ohr