Datenbank Listview mit Checkbox

P

pieradnHero

Neues Mitglied
0
Hi,

ich bin blutiger Anfänger was Programmieren und insbesondere Android-Programmierung betrifft. Habe durch viel Lesen, probieren usw. schon einiges zum laufen gebracht. Nur leider hänge ich nun seit Tagen an einem Problem und weis einfach nicht mehr weiter.

Und zwar habe ich eine Datenbank mit mehreren Spalten. Diese Datenbank möchte ich in einer Liste ausgeben. Hierzu habe ich ein Layout mit einer ListView und ein Layout für die Zeilen in der ListView erstellt. Das Zeilen Layout enthält eine Checkbox und zwei Textview.

Nach ewigem rumprobieren habe ich es endlich geschafft das meine Datenbankeinträge in der Liste korrekt angezeigt werden.
Hierzu verwende ich folgenden Code:

PHP:
Cursor c = datenbank.rawQuery("SELECT _id, name, sort FROM " + database_table + ";", null);
startManagingCursor(c);
        
        
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.list_row,c,new String[] { "_id", "name", "sort" }, new int[] { 
R.id.ListRowText1, R.id.ListRowText2 });
        

        adapter.setViewBinder(new ViewBinder() {
            @Override
            public boolean setViewValue(View view, Cursor theCursor, int columnname) {
                    switch(view.getId()) {
                    case R.id.ListRowText1:
                        final String ColumnName = theCursor.getString(1);
                        ((TextView)view).setText(ColumnName);
                        return true;
                    case R.id.ListRowText2:
                        final String ColumnAge = theCursor.getString(2);
                        ((TextView)view).setText(ColumnAge);
                        return true;
                    }
                
            return false;
            }
            
        });
        setListAdapter(adapter);
Das funktioniert wie gesagt super. Nun sieht mein Zeilenlayout folgendermaßen aus: Checkbox - Textview - Textview.
Beide Textviews werden durch den obigen Code erfolgreich "gefüllt".

Mein Problem ist nun, wie schaffe ich es, das wenn ich die Checkbox anklicke, eine Aktion ausgeführt wird.
Gedacht habe ich mir, das beim checken der Checkbox automatisch die Zahl 1 in meine Datenbankspalte Status geschrieben wird. Wird die Checkbox ungecheckt wird 0 reingeschrieben.

Habe bereits sehr viele Tutorials durchgesucht allerdings war nie was passendes dabei. Alle Beispiele die mein Problem behandeln, waren mit Arrays anstatt mit einer Datenbank oder nicht passend genug. Kennt einer ein Tutorial oder kann mir ein Codebeispiel schreiben wie ich mein Problem am besten Lösen kann? Bitte so einfach wie möglich erklären, da ich ganz neu im Bereich Programmieren bin :)

Vielen Dank schonmal für eure Hilfe

Gruß
 
Also ich persönlich ziehe es vor, eine eigene Adapter-Klasse zu schreiben, welche ich von ArrayAdapter ableite.

Darin wird getView() überschrieben, um die entsprechenden Views mit Daten zu füllen (in deinem Fall die CheckBox und die beiden TextViews). Auch kann man hier Listener registrieren, wie z.B. ein OnFocusChange auf nen EditText oder in deinem Fall ein OnCheckedChangeListener auf die CheckBox und entsprechend darauf reagieren.

Die Daten lese ich dann vom Cursor in eine ArrayList, kann den Cursor schließen und hab alle Daten immer in meiner ArrayList verfügbar.

Zu meinem Array-Adapter erstelle ich mir immer noch eine Datenklasse, die ich übergebe. Somit kann ich immer auf meine Methoden zugreifen, um Werte zu lesen oder zu speichern.

Alles in allem recht einfach, wenn man es ein paar mal gemacht hat :smile:
 
Gibts da evtl. ein gutes Tutorial oder ein Beispiel was dieses Adapter selber schreiben erklärt?

Hab schon öfters gelesen das man mit einer eigenen Adapterklasse mehr erfolg hat, nur leider sind dafür meine Kenntnisse wohl noch etwas zu wenig :)
 
einfach bei google nach custom adapter suchen. dazu gibts genug
 

Ähnliche Themen

S
Antworten
33
Aufrufe
2.540
Sempervivum
S
A
Antworten
10
Aufrufe
1.005
swa00
swa00
D
Antworten
9
Aufrufe
1.730
jogimuc
J
Zurück
Oben Unten