左側のフラグメントに展開可能なリストがあり、右側に詳細フラグメントがあるレイアウトがあります。これはすべて正常に機能します。
次に、左側のどのアイテムが右側に詳細を表示しているのかを示したいと思いますが、ここで問題が発生しています。
通常のリストビューでは、リストビューの選択モードを単一に設定し、「アクティブ化された」状態に基づいて描画可能な状態を使用することで、これを実現しました。アイテムをクリックすると、背景が選択した色に設定され、リストから別のアイテムを選択するまでその色が維持されます。
これを拡張可能なリストビューに適用しようとしましたが、それは悲惨な失敗でした。エラーはありませんでしたが、選択したアイテムは色の状態を維持していませんでした。選択モードを適切に設定していないか(レイアウトファイルとプログラムで試しましたが、違いはないようです)、間違ったものを指しているかどうかはわかりません。 (それがどのようになるかはわかりませんが...)
ヘルプ/ポインタはありがたいです(たとえそれが完全に異なる方向にあるとしても)。
最新の障害:
拡張可能なリストビューコード
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>