2009-05-21 18 views
7

Ich habe eine ListActivity von einer Cursor mit SimpleCursorAdapter ausgefüllt, die eine andere Aktivität startet, wenn auf eines der Listenelemente geklickt wurde. Ich verwende auch ViewBinder, um eine benutzerdefinierte Transformation der Daten durchzuführen.Benutzerdefinierte Liste mit Kontrollkästchen klicken

Ich möchte eine CheckBox zu jeder Zeile in der Liste hinzufügen, also habe ich die Ansicht geändert und eine CheckBox mit Schwerkraft rechts hinzugefügt.

Durch das Hinzufügen der CheckBox wurde die Möglichkeit zum Klicken auf die Elemente entfernt. Die onListItemClick Methode, die ich in ListActivity überschrieb, wird nicht mehr aufgerufen, wenn Sie auf einen Listeneintrag drücken. Das Entfernen der CheckBox behebt dies. Warum ist das?

Wie kann ich die Liste auch so einrichten, dass sie weiterhin die erforderlichen Funktionen ausführt, wenn der Hauptteil des Listenelements angeklickt wird, aber über zusätzliche Funktionen verfügt, wenn CheckBox im Element aktiviert ist? Wird die Einstellung onCheckedChangedListener funktionieren oder wird dieselbe Ansichtsinstanz für jedes Element in der Liste erneut verwendet?

Antwort

4

Sieht aus wie SimpleCursorAdapter ist zu primitiv für das, was ich erreichen wollte. Ich habe zu Implementierung CursorAdapter gewechselt und eine neue Ansicht mit der LayoutInflater in meiner Implementierung der newView Methode zurückgegeben.

public View newView(Context context, Cursor cursor, ViewGroup parent) { 
    return LayoutInflater.from(context).inflate(R.layout.alarm_row, parent, false); 
    } 

In Bindview Ich habe dann einen benutzerdefinierten OnClickListener meine Haupt LinearLayout und dann eine andere OnCheckedChangeListener zum CheckBox.

Für all dieses Recht sehe ich die LinearLayout ‚s Hintergrund einstellen musste Androids menuitem ziehbar: nur der Klick-Listener arbeitet

android:background="@android:drawable/menuitem_background" 
+0

Hallo können Sie mehr Code von diesem Beitrag? – Maxrunner

14

Wie erklärt here, wenn keine andere Ansicht focusable ist. Einstellen der CheckBox zu focusable="false" sollte es tun:

<CheckBox android:focusable="false" /> 
Verwandte Themen