Multiple-Choice-Liste mit benutzerdefinierter Ansicht?

Ich habe gesehen, Beispiel com.Beispiel.android.apis.Blick.List11 von ApiDemos. In diesem Beispiel wird jede Zeile vertritt die Ansicht android.R.simple_list_item_multiple_choice. Jede solche Ansicht hat eine TextView und ein CheckBox.

Nun möchte ich jede Ansicht haben 2 TextViews und 1 CheckBoxähnlich wie die List3 Beispiel. Ich habe versucht das erstellen einer benutzerdefinierten layout-Datei row.xml wie diese:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <CheckBox
        android:id="@+id/checkbox"
        android:layout_alignParentRight="true"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent" />
    <TextView
        android:id="@+id/text_name"
        android:textSize="13px"
        android:textStyle="bold"
        android:layout_toLeftOf="@id/checkbox"
        android:layout_alignParentLeft="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/text_phone"
        android:textSize="9px"
        android:layout_toLeftOf="@id/checkbox"
        android:layout_below="@id/text_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" /> 
</RelativeLayout>

Dann in Activity's onCreate() ich dies so tun:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Query the contacts
    mCursor = getContentResolver().query(Phones.CONTENT_URI, null, null, null, null);
    startManagingCursor(mCursor);

    ListAdapter adapter = new SimpleCursorAdapter(this,
            R.layout.row,
            mCursor, 
            new String[] { Phones.NAME, Phones.NUMBER}, 
            new int[] { R.id.text_name, R.id.text_phone });
    setListAdapter(adapter);
    getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}

Das Ergebnis sieht irgendwie aus wie das, was ich will, aber wie es aussieht ist die Liste nicht weiß, welches Element ausgewählt wird. Außerdem muß ich auf genau auf die CheckBox. In der List11 Beispiel brauche ich nur zu klicken Sie auf das Element Zeile.

Also, was muss ich tun, um eine multiple-choice-Liste mit meinen benutzerdefinierten Ansicht für jede Zeile? Vielen Dank.

InformationsquelleAutor der Frage Phil | 2010-04-16

Schreibe einen Kommentar