1:divider childDivider android:childDivider="@color/blue_700" 设置父item和子item分割线的显示样式
:2:android:dividerHeight="5dp" 设置分割线的高度
3:不管是divider还是childDivider,如果需要将分割线去掉的时候,都不要将这个属性设置为@null,如下所示: :4:groupIndicator 这个属性是用于控制父项前面的小箭头用的,如果想要用自己的图片替换掉那个箭头可以这样写: 5:android:groupIndicator="@drawable/picture" 6:indicatorLeft
箭头或者自己设置的图片的右边框距离手机左边边缘的距离,类似于marginLeft
// 相关api
// for (int i = 0, count = expandableListView.getCount(); i < count; i++) {
// 打开某一组父节点
// expandableListView.expandGroup(i);
// }
// 收缩某一组:
// expand_1.collapseGroup(lastGroupPosition_1);
// mExpListView.isGroupExpanded(i) 判断某一个父节点是否处于打开状态
// expandableListView.setDivider();这个是设定每个Group之间的分割线。
// expandableListView.setGroupIndicator();这个是设定每个Group之前的那个图标。
eg:
String[] type={"电器","动物","植物"}; String [] [] classes={{"电扇","冰箱","空调","手电","电脑"},{"电扇","冰箱","空调","手电","电脑"},{"电扇","冰箱","空调","手电","电脑"}};
ExpandableListAdapter expandableListAdapter=new ExpandableListAdapter() { @Override public void registerDataSetObserver(DataSetObserver observer) { } @Override public void unregisterDataSetObserver(DataSetObserver observer) { } @Override public int getGroupCount() { return type.length; } @Override public int getChildrenCount(int groupPosition) { return classes[groupPosition].length; } @Override public Object getGroup(int groupPosition) { return type[groupPosition]; } @Override public Object getChild(int groupPosition, int childPosition) { return classes[groupPosition][childPosition]; } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public boolean hasStableIds() { return false; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View view = convertView; GroupHolder holder = null; if(view == null){ holder = new GroupHolder(); view = LayoutInflater.from(ExpandableListViewActivity.this).inflate(R.layout.listview_group_item, null); holder.groupName = (TextView)view.findViewById(R.id.tv); view.setTag(holder); }else{ holder = (GroupHolder)view.getTag(); } // 设置自定义tag标签 view.setTag(R.layout.listview_child_item,-1); holder.groupName.setText(type[groupPosition]); if(isExpanded){ }else{ } return view; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { View view = convertView; ChildHolder holder = null; if(view == null){ holder = new ChildHolder(); view = LayoutInflater.from(ExpandableListViewActivity.this).inflate(R.layout.listview_child_item, null); holder.childName = (TextView)view.findViewById(R.id.tv); view.setTag(holder); }else{ holder = (ChildHolder)view.getTag(); } view.setTag(R.layout.listview_child_item,childPosition); holder.childName.setText(classes[groupPosition][childPosition]); return view; } // 子项是否可选中,如果需要设置子项的点击事件,需要返回true 但子项布局中设置的控件的监听器依然可以生效。 @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } @Override public boolean areAllItemsEnabled() { return false; } @Override public boolean isEmpty() { return false; } @Override public void onGroupExpanded(int groupPosition) { } @Override public void onGroupCollapsed(int groupPosition) { } @Override public long getCombinedChildId(long groupId, long childId) { return 0; } @Override public long getCombinedGroupId(long groupId) { return 0; } };
// 为子项添加点击的监听事件 expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) { return false; } }); expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { @Override public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { return false; } }); expandableListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } });