1:本意是想在控件初始化数据后,默认选中某一子项,然后定位到该位置,将该子项背景色更改,大概流程为
expandableListView.expandGroup(groupPosition,true); expandableListView.setSelectedChild(groupPosition, childPosition,true); expandableListView.smoothScrollToPosition(getPosition(groupPosition, childPosition));
其中getPosition方法为获取子项从第一项开始(包括组)的位置
public int getPosition(int groupIndex, int childIndex) { int position = 0; for (int i = 0; i < groupIndex; i++) { position++; if (expandableListView.isGroupExpanded(i)){ position = position + expandableListAdapter.getChildrenCount(i); } } position++; position = position + childIndex; return position; }
后来发现更改子项背景色时会出现问题,可能跟ExpandableListAdapter的getGroupView和getChildView有关,找了几天没有解决,就暂时搁置了,如有哪位大佬提供思路,再进一步研究.
2:同时只展开一个Group
expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { //只展开一个Group for (int i = 0; i < expandableListAdapter.getGroupCount(); i++) { if (groupPosition != i) { expandableListView.collapseGroup(i); } } Log.d(TAG,String.format("onGroupExpand:groupposition %d",groupPosition)); } });