Android 组件中本身带有 ExpandableListView ,类似qq分组。查看源码可看到
ExpandableListView 继承自listView。所以最重要的适配器也和普通的listView差不多。适配器继承自BaseExpandableListAdapter。
和普通的listView用法一样,继承BaseExpandableListAdapter,重写里面方法。

    public ExpandListAdapter1(List list, Context context) {        this.list = list;        this.context = context;    } @Override    public void registerDataSetObserver(DataSetObserver dataSetObserver) {    }    @Override    public void unregisterDataSetObserver(DataSetObserver dataSetObserver) {    }    //分组list大小    @Override    public int getGroupCount() {        return list.size();    }    //分组对应下面的子组list大小    @Override    public int getChildrenCount(int i) {        return list.get(i).users.size();    }    //组对应的item    @Override    public Object getGroup(int i) {        return list.get(i);    }    //分组对应下面的子租的item    @Override    public Object getChild(int i, int i1) {        return list.get(i).users.get(i1);    }    //分组对应的item的id    @Override    public long getGroupId(int i) {        return i;    }    //子组对应的item的id    @Override    public long getChildId(int i, int i1) {        return i1;    }    @Override    public boolean hasStableIds() {        return true;    }    //组对应的listview的getview及点击组关闭组或者打开,isExpanded对应组是否打开    @Override    public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {        GroupHolder holder = null;        if (convertView == null) {            holder = new GroupHolder();            convertView = LayoutInflater.from(context).inflate(R.layout.item_group_title, null);            holder.title = (TextView) convertView.findViewById(R.id.item_GroupTitle);            holder.isExpand = (ImageView) convertView.findViewById(R.id.itemIsExpand);            convertView.setTag(holder);        } else {            holder = (GroupHolder) convertView.getTag();        }        if (isExpanded) {            holder.isExpand.setImageResource(R.mipmap.openthesymbol2x);        } else {            holder.isExpand.setImageResource(R.mipmap.closethesymbol2x);        }        holder.title.setText(list.get(groupPosition).name);        return convertView;    }    //子组对应listview的getView    @Override    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {        ChildHolder holder;        if (convertView == null) {            holder = new ChildHolder();            convertView = LayoutInflater.from(context).inflate(                    R.layout.item_child, null);            holder.name = (TextView) convertView.findViewById(R.id.childItemTitle);            holder.img = (ImageView) convertView.findViewById(R.id.childItemImg);            convertView.setTag(holder);        } else {            holder = (ChildHolder) convertView.getTag();        }        FindAccountByOrgResponse.ChildrenBean.UsersBean cb = list.get(groupPosition).users.get(childPosition);        holder.name.setText(cb.name);        holder.job.setText("");        Glide.with(context).load(cb.avatar).into(holder.img);        return convertView;    }    @Override    public boolean isChildSelectable(int i, int i1) {        return true;    }    @Override    public boolean areAllItemsEnabled() {        return false;    }    @Override    public boolean isEmpty() {        return false;    }    @Override    public void onGroupExpanded(int i) {    }    @Override    public void onGroupCollapsed(int i) {    }    @Override    public long getCombinedChildId(long l, long l1) {        return 0;    }    @Override    public long getCombinedGroupId(long l) {        return 0;    }    class GroupHolder {        TextView title,more;        ImageView isExpand;    }    class ChildHolder {        TextView name,job;        ImageView img;    }}

在添加适配器的时候比listView多一条,

 expandableListView1.setGroupIndicator(null);

是否选择默认的组的打开或关闭的指示器,就是组前面的箭头,可以自定义

更多相关文章

  1. Android(安卓)系统信息获取(CPU,RAM,ROM,Battery,SD-card,版本等)
  2. android 使用zxing生成中间嵌套logo的二维码
  3. Android判断两个时间的大小
  4. android 常用 INTENT
  5. 学习音频之android中AudioRecord采集音频的参数说明
  6. Android大图裁剪解决办法
  7. Android轮播图 banner,图片视频混播banner
  8. Android(安卓)UI设计--新闻或信息条数的实现
  9. Android(安卓)SDCard的容量大小

随机推荐

  1. 另辟思路解决 Android(安卓)4.0.4 不能监
  2. android屏幕旋转
  3. Android(安卓)Studio如何轻松整理字符串
  4. Android(安卓)的 dex2jar 和 jd-gui 反编
  5. 第2.3节 android目录中manifest的介绍
  6. android抓包及分析
  7. Android下无法调用JRE下的sun.security.x
  8. Android开发教程之感应检测Sensor
  9. 字符串操作 — Google Guava
  10. Android中各个Activity中数据的传递