У меня есть макет, где у меня есть расширяемый список в фрагменте слева и фрагмент деталей справа. Все это прекрасно работает.
Теперь я хотел бы указать, какой элемент слева содержит данные, показанные справа, и здесь у меня проблема.
В обычном виде списка я достиг этого, установив режим выбора для представления списка в одиночный, а затем используя состояние, которое можно вывести на основе "активированного" состояния. Когда я нажимаю элемент, фон устанавливается на мой выбранный цвет и остается таким, пока я не выберу другой элемент в списке.
Я попытался применить это к моему расширяемому списку, и это был/был мрачный сбой. Ошибок не было, но выбранный элемент не поддерживал его состояние цвета. Я не уверен, что я не правильно настрою режим выбора (я пробовал его в файле макета, а также программно, это, похоже, не имеет значения), или указывая на неправильную вещь (не знаю, как это могло быть, но...)
Любая помощь/указатели оценивается (даже если она находится в совершенно другом направлении).
Самый текущий сбой:
расширяемый код списка
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;
}
}
item_selector.xml
<?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>