Einzelne spalten einer ListView abfragen

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.

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 ;)
 
Hi,

über einen CustomAdapter müsste es gehen, dann kannst du deine einzelnen Elemente mit Clicklistenern ausstatten. (Ganz sicher bin ich mir nicht)
Aber ich hatte schon mal eine ListView, in welcher ich Buttons hatte, die Klickbar sein mussten, und auch die Zeile sollte klickbar sein. Da hat es funktioniert.
 
hab jetzt nach diesem tut mal eine liste erstellt
Android Multicolumn Listview Example

kannst du mir sagen wie ich das da jetzt realisiere (am besten mit code) ? stehe irgendwie auf dem schlauch

danke
 
Sorry wenn cih mcih einmische da Kardoid ja schon dabei sit zu helfen aber ich würde dir empfehlen die Docs durchzulesen. Seine Methode hat sich ja bei ihm bewährt und das sollte sie bei dir auch. Die Listview enthält wie der Name schon sagt Views. Diese reagieren auf deine Klicks. Nun ist es wohl so dass diese deine Klicks nciht so verarbeiten wie du es gerne haben möchtest.

Also ist der Tipp mit Clicklistenern die richtige Variante.(oder die Methode onClick() der Views überschreiben jedoch müsstest du die View in Code machen daher ist der onClicklListener da praktikabler ausserdem wird dieser noch vor der onClick() methode angesprochen, habe ich mal gelesen)

Ein paar links zu vers. Methoden (hauptsächlich links die vom ersten Link aus zugänglich sind;)):

Google-Android clickable elements listview

Android: ListView elements with multiple clickable elements - Stack Overflow

android - How to make items clickable in list view? - Stack Overflow

Android: ListView elements with multiple clickable buttons - Stack Overflow

Multiple Clickable Zones in ListView Items | Wires Are Obsolete

Also entweder Fokus beantragen oder onclicklistener verteilen:)
 

Ähnliche Themen

A
Antworten
10
Aufrufe
1.025
swa00
swa00
B
Antworten
3
Aufrufe
1.312
swa00
swa00
D
  • Data2006
Antworten
14
Aufrufe
518
jogimuc
J
Zurück
Oben Unten