ExpandableListView 简单实现二级列表

        ExpandavleListView是一个简单实现二级列表的控件,和其他ListView相同,ExpandavleListView也有一个adapter适配器Expandavleadapger。

       

定义布局文件

<ExpandableListView
    android:id="@+id/Expandable"
    android:layout_width="match_parent"
    android:layout_height="match_parent"></ExpandableListView>

设置ExpandavleListView的子控件 因为是二级列表所以有两个子控件,分别是分组的子控件与子选择的控件

    1.分组子视图

<TextView
    android:id="@+id/group_item"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:paddingLeft="40dp" />

    2.子选择视图

<TextView
    android:id="@+id/item"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />



设置二级列表中的数据 ,我没有用借口所以用假数据代替

public String[] groupitem_name={"水果","蔬菜"};
public String[][] chilitem_name={
    {"香蕉","苹果"},
    {"土豆","番茄"}};

使用ExpandableListViewadapter,要继承BaseExpandableListAdapter

package com.example.administrator.expandavlelistveiw;

import android.content.Context;
import android.support.constraint.Group;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

/**
 * Created by Administrator on 2018/5/7.
 */

public class MyExpandableAdapter extends BaseExpandableListAdapter {
    public String[] groupitem_name={"水果","蔬菜"};
    public String[][] chilitem_name={
            {"香蕉","苹果"},
            {"土豆","番茄"}};
    Context context;

    public MyExpandableAdapter(Context context) {
        this.context = context;
    }

    //        获取分组的个数
    @Override
    public int getGroupCount() {
        return groupitem_name.length;
    }

    //        获取指定分组中的子选项的个数
    @Override
    public int getChildrenCount(int i) {
        return chilitem_name.length;
    }

    //        获取指定的分组数据
    @Override
    public Object getGroup(int i) {
        return groupitem_name[i];
    }
    //        获取指定分组中的指定子选项数据
    @Override
    public Object getChild(int i, int i1) {
        return chilitem_name[i][i1];
    }
    //        获取指定分组的ID, 这个ID必须是唯一的
    @Override
    public long getGroupId(int i) {
        return i;
    }
    //        获取子选项的ID, 这个ID必须是唯一的
    @Override
    public long getChildId(int i, int i1) {
        return i1;
    }
    //        分组和子选项是否持有稳定的ID, 就是说底层数据的改变会不会影响到它们。
    @Override
    public boolean hasStableIds() {
        return true;
    }
    //        获取显示指定分组的视图
    @Override
    public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
        Groupitem groupitem;
        if (view==null){
            view= LayoutInflater.from(context).inflate(R.layout.expandableitem_01,viewGroup,false);
            groupitem=new Groupitem();
            groupitem.textView=(TextView)view.findViewById(R.id.group_item);
            view.setTag(groupitem);
        }else {
            groupitem=(Groupitem) view.getTag();
        }
        groupitem.textView.setText(groupitem_name[i]);
        return view;
    }

    @Override
    public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
        chilItem chilItem;
        if (view==null){
            view= LayoutInflater.from(context).inflate(R.layout.expandableitem_02,viewGroup,false);
            chilItem=new chilItem();
            chilItem.textView=(TextView)view.findViewById(R.id.chil_item);
            view.setTag(chilItem);
        }else {
            chilItem=(chilItem)view.getTag();
        }
        chilItem.textView.setText(chilitem_name[i][i1]);
        return view;
    }
    //        指定位置上的子元素是否可选中
    @Override
    public boolean isChildSelectable(int i, int i1) {
        return true;
    }
    class Groupitem{
        TextView textView;
    }
    class chilItem{
        TextView textView;
    }
}

MainActivity文件

package com.example.administrator.expandavlelistveiw;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ExpandableListView;

public class MainActivity extends AppCompatActivity {

    private ExpandableListView expandable;
    private MyExpandableAdapter myExpandableAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        expandable.setAdapter(myExpandableAdapter);

    }
    //初始化ExpandableListView控件与Adapter
    private void initView() {
        expandable = (ExpandableListView) findViewById(R.id.Expandable);
        myExpandableAdapter =new MyExpandableAdapter(this);
    }
}

效果图

ExpandableListView 简单实现二级列表