二级列表

2020-03-18  本文已影响0人  魔女小姐的猫

二级列表(ExpandableListView)

  1. 概念:

A view that shows items in a vertically scrolling two-level list. This differs from the ListView by allowing two levels: groups which can individually be expanded to show its children. The items come from the ExpandableListAdapter associated with this view.

一种用于垂直滚动展示二级列表的视图,组可以单独展开。这些选项的数据通过ExpandableListView关联。
  1. 使用场景:


    QQ.png
  2. 属性:

divider 设置父选项之间的分割线样式
childDivider 设置子选项之间的分割线样式
divider 设置分割线的高度
groupIndicator 父项前的图标
childIndicator 子项前的图标

  1. 步骤:
  1. 创建布局并找id
  2. 获取数据(死数据,网络数据)
  3. 创建视图(Group,item)
  4. 创建适配器(继承BaseExpandableListAdapter)
  5. 给二级列表绑定适配器

5.适配器(BaseExpandableListAdapter)

     //父项的个数
    @Override
    public int getGroupCount() {
        return list.size();
    }

     //某个子项的个数
    @Override
    public int getChildrenCount(int groupPosition) {
        return list.get(groupPosition).getChildren().size();
    }

    //获取某个父项
    @Override
    public Object getGroup(int groupPosition) {
        return list.get(groupPosition);
    }

    //获取某个子项
    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return list.get(groupPosition).getChildren().get(childPosition);
    }

    //父项的id
    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    //子项的id 
    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }


    @Override
    public boolean hasStableIds() {
        return false;
    }

    //获取父项的view
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        convertView = LayoutInflater.from(context).inflate(R.layout.layout_group, null);
        ViewHolder holder = new ViewHolder(convertView);
        holder.tv_group.setText(list.get(groupPosition).getName());
        return convertView;
    }

    //获取子项的view
    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        convertView = LayoutInflater.from(context).inflate(R.layout.layout_group, null);
        ViewHolder holder = new ViewHolder(convertView);
        holder.tv_group.setText(list.get(groupPosition).getChildren().get(childPosition).getName());
        return convertView;
    }

    //子项是否可选中
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }
  1. 监听事件 :适配器的isChildSelectable()方法必须返回true

setOnChildClickListener() 单击子选项
setOnGroupClickListener() 单击组选项
setOnGroupCollapseListener() 分组合并(关)
setOnGroupExpandListener() 分组合并(开)

上一篇 下一篇

猜你喜欢

热点阅读