adapter=new My_Control_Adapter(getActivity(),lists); expandableListView = (ExpandableListView) v.findViewById(R.id.control_expandable); expandableListView.setAdapter(adapter); expandableListView.setGroupIndicator(null); // 去掉默认带的箭头 expandableListView.setSelection(0);// 设置默认选中项 adapter.setselect(0); for (int i = 0; i < adapter.getGroupCount(); i++) { expandableListView.collapseGroup(i); } expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { for (int i = 0, count = expandableListView .getExpandableListAdapter().getGroupCount(); i < count; i++) { if (groupPosition != i) {// 关闭其他分组 expandableListView.collapseGroup(i); for(int j=0;j<adapter.getChildrenCount(i);j++) expandableListView.setItemChecked(j, false); } } } }); expandableListView.expandGroup(0); expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { @Override public boolean onChildClick(ExpandableListView expandableListView, View view, int groupPosition, int childPosition, long l) { adapter.setSelectedItem(groupPosition,childPosition); adapter.notifyDataSetChanged(); return true; } });private List<GroupEntity> initList() { List<GroupEntity> groupList; //测试数据 String[] groupArray = new String[] { "大厅","主卧", "次卧","厨房"}; String[][] childTimeArray = new String[][] { { "测试数据1", "测试数据2", "测试数据3" }, { "测试数据4"}, { "测试数据5", "测试数据6" } ,{ "测试数据7", "测试数据8" }}; groupList = new ArrayList<GroupEntity>(); for (int i = 0; i < groupArray.length; i++){ GroupEntity groupEntity = new GroupEntity(groupArray[i]); List<ChildEntity> childList = new ArrayList<ChildEntity>(); for (int j = 0; j < childTimeArray[i].length; j++) { ChildEntity childStatusEntity = new ChildEntity(childTimeArray[i][j]); childList.add(childStatusEntity); } groupEntity.setChildEntities(childList); groupList.add(groupEntity); } return groupList; }public class GroupEntity { private String groupName; private List<ChildEntity> childEntities; public GroupEntity(String groupName) { this.groupName = groupName; } public List<ChildEntity> getChildEntities() { return childEntities; } public void setChildEntities(List<ChildEntity> childEntities) { this.childEntities = childEntities; } public String getGroupName() { return groupName; } }public class ChildEntity { private String childTitle; public ChildEntity(String childTitle) { this.childTitle = childTitle; } public String getChildTitle() { return childTitle; } }public class My_Control_Adapter extends BaseExpandableListAdapter { private LayoutInflater inflater = null; private List<GroupEntity> groupList; private Context context; private int select=-1; ControlFragment controlFragment = new ControlFragment(); private int groupPositions; SparseBooleanArray selected; int old = -1; int parentPosition = -1; /** * 构造方法 * * @param context * @param group_list */ public My_Control_Adapter(Context context,List<GroupEntity> group_list) { this.context=context; this.groupList = group_list; inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); selected = new SparseBooleanArray(); } /** * 返回一级Item总数 */ @Override public int getGroupCount() { // TODO Auto-generated method stub return groupList.size(); } /** * 返回二级Item总数 */ @Override public int getChildrenCount(int groupPosition) { if (groupList.get(groupPosition).getChildEntities() == null) { return 0; } else { return groupList.get(groupPosition).getChildEntities().size(); } } /** * 获取一级Item内容 */ @Override public Object getGroup(int groupPosition) { // TODO Auto-generated method stub return groupList.get(groupPosition); } /** * 获取二级Item内容 */ @Override public Object getChild(int groupPosition, int childPosition) { return groupList.get(groupPosition).getChildEntities().get(childPosition); } @Override public long getGroupId(int groupPosition) { // TODO Auto-generated method stub return groupPosition; } @Override public long getChildId(int groupPosition, int childPosition) { // TODO Auto-generated method stub return childPosition; } @Override public boolean hasStableIds() { // TODO Auto-generated method stub return false; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { GroupViewHolder holder = new GroupViewHolder(); if (convertView == null) { convertView = inflater.inflate(R.layout.group_status_item1, null); } holder.groupName = (TextView) convertView .findViewById(R.id.one_status_name); holder.groupimg = (ImageView) convertView.findViewById(R.id.img_group); holder.groupName.setText(groupList.get(groupPosition).getGroupName()); if(isExpanded){ holder.groupimg.setBackgroundResource(R.mipmap.device_normal); // if (groupPosition == groupPositions) { // controlFragment.setItemCheck(); // notifyDataSetChanged(); // } }else{ holder.groupimg.setBackgroundResource(R.mipmap.device_normal); } return convertView; } @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ChildViewHolder viewHolder = null; final ChildEntity entity = (ChildEntity) getChild(groupPosition, childPosition); if (convertView != null) { viewHolder = (ChildViewHolder) convertView.getTag(); } else { viewHolder = new ChildViewHolder(); convertView = inflater.inflate(R.layout.child_status_item1, null); viewHolder.childTitle = (TextView) convertView.findViewById(R.id.tv_title); viewHolder.surface = (LinearLayout) convertView.findViewById(R.id.item_surface); convertView.setTag(viewHolder); } if (entity!=null) { viewHolder.childTitle.setText(entity.getChildTitle()); } if (selected.get(childPosition)&&this.parentPosition==groupPosition) { viewHolder.surface.setBackgroundColor(Color.BLUE); } else { // convertView.setBackgroundResource(R.color.white); viewHolder.surface.setBackgroundColor(Color.WHITE); } return convertView; } @Override public boolean isChildSelectable(int i, int i1) { return true; } private class GroupViewHolder { TextView groupName; ImageView groupimg; } private class ChildViewHolder { public TextView childTitle; public LinearLayout surface; } private void toast(String msg) { Toast.makeText(context,msg,Toast.LENGTH_SHORT).show(); } public void setselect(int select){this.select = select;} public void setGroupPosition(int groupPosition){this.groupPositions = groupPosition;} public void setSelectedItem(int groupPosition,int selected) { this.parentPosition = groupPosition; if (old != -1) { this.selected.put(old, false); } this.selected.put(selected, true); old = selected; } }
expandableListView点击高亮
最新推荐文章于 2019-09-02 11:15:46 发布