我有一個佈局,在左側的一個片段中有一個可擴展列表,右側有一個細節片段。這一切工作正常。突出顯示可擴展列表中的選定項目
現在我想指出左側的項目是否在右側顯示了詳細信息,在這裏我遇到了問題。
在正常的列表視圖中,我已經通過將列表視圖的選擇模式設置爲單一,然後使用基於「激活」狀態的可繪製狀態來實現此目的。當我點擊該項目時,背景設置爲我選擇的顏色並保持不變,直到我選擇列表中的其他項目。
我試圖將此應用於我的可擴展列表視圖,它是/是一個令人沮喪的失敗。沒有錯誤,但所選項目未保持其顏色狀態。我不知道如果我沒有正確設置選擇模式(我已經在佈局文件中以編程方式嘗試過它,它似乎沒有什麼區別),或者指向錯誤的東西(不知道如何可能,但...)
任何幫助/指針讚賞(即使它是在一個完全不同的方向)。
大多數當前的失敗:
膨脹列表視圖代碼
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>
你的問題是當你點擊它很好,但當你的列表視圖向上或向下移動它只是失去了它的顏色 – 2012-04-25 15:25:45
不,這不是我的問題。我的問題與我所說的完全相同。我選擇了該項目並且不保留突出顯示。它爲「按下」狀態閃爍顏色,但不會變爲/保持「激活」狀態的顏色。 – Barak 2012-04-25 15:30:42