Markieren Sie das ausgewählte Element in der erweiterbaren Liste

Ich habe ein Layout, in dem ich eine erweiterbare Liste in einem Fragment links und ein Detailfragment rechts habe. Das alles funktioniert gut.

Jetzt möchte ich angeben, bei welchem ​​Artikel auf der linken Seite die Details auf der rechten Seite angezeigt werden und hier habe ich ein Problem.

In einer normalen Listenansicht habe ich dies erreicht, indem ich den Auswahlmodus für die Listenansicht auf "Einfach" gesetzt und dann einen Status verwendet habe, der auf der Grundlage des "aktivierten" Status gezeichnet werden kann. Wenn ich auf das Objekt klicke, wird der Hintergrund auf die von mir ausgewählte Farbe eingestellt und bleibt so, bis ich ein anderes Objekt in der Liste auswähle.

Ich habe versucht, dies auf meine erweiterbare Listenansicht anzuwenden, und es war / ist ein trauriger Fehler. Es gab keine Fehler, aber das ausgewählte Element behielt seinen Farbstatus nicht bei. Ich bin nicht sicher, ob ich den Auswahlmodus nicht richtig dafür einstelle (ich habe es sowohl in der Layoutdatei als auch programmgesteuert versucht, es scheint keinen Unterschied zu machen) oder ob ich es auf das Falsche zeige (nicht sicher, wie das sein könnte, aber ...)

Alle Hilfe / Hinweise geschätzt (auch wenn es in eine ganz andere Richtung geht).

Aktuellster Fehler:

erweiterbarer Listview Code

<code>private void fillData(String group, String child) {
    ExpandableListView lv;
    mGroupsCursor = mDbHelper.fetchGroup(group);
    getActivity().startManagingCursor(mGroupsCursor);
    mGroupsCursor.moveToFirst();
    lv = (ExpandableListView) getActivity().findViewById(R.id.explist);
    lv.setChoiceMode(ExpandableListView.CHOICE_MODE_SINGLE);        

    mAdapter = new MyExpandableListAdapter(mGroupsCursor, getActivity(),
            R.layout.explistlayout,
            R.layout.explistlayout,
            new String[] { "_id" },
            new int[] { android.R.id.text1 },
            new String[] { child },
            new int[] { android.R.id.text1 });
    lv.setAdapter(mAdapter);
    registerForContextMenu(lv);

    lv.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { 
        @Override 
        public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id)  
        { 
            mRowId  = id;
            EventDisplayFragment eventdisplay = new EventDisplayFragment();
            getFragmentManager().beginTransaction().replace(R.id.rightpane, eventdisplay).commit();
            return true; 
        } 
        }); 
}

public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {

    public MyExpandableListAdapter(Cursor cursor, Context context,
            int groupLayout, int childLayout, String[] groupFrom,
            int[] groupTo, String[] childrenFrom, int[] childrenTo) {
        super(context, cursor, groupLayout, groupFrom, groupTo,
                childLayout, childrenFrom, childrenTo);
    }
    @Override
    protected Cursor getChildrenCursor(Cursor groupCursor) {
        Cursor childCursor = mDbHelper.fetchChildren(mGroup, groupCursor
                .getString(groupCursor
                        .getColumnIndex(AttendanceDB.EVENT_ROWID)));
        getActivity().startManagingCursor(childCursor);
        childCursor.moveToFirst();
        return childCursor;
    }
}
</code>

item_selector.xml

<code><?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
     android:state_pressed="true" 
     android:drawable="@color/green" />
    <item 
     android:state_selected="true" 
     android:drawable="@color/blue" />
    <item 
     android:state_focused="true" 
     android:drawable="@color/violet" />
    <item 
     android:state_activated="true" 
     android:drawable="@color/blue" />
</selector>
</code>

Antworten auf die Frage(11)

Ihre Antwort auf die Frage