android ExpandableListView

1.main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >
       <ExpandableListView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/expandableListView"
            />
</LinearLayout>

2.BaseExpandableListAdapter

public class MyListAdapter extends BaseExpandableListAdapter {


    Context context;
    List<String> groupList = new ArrayList<String>();
    List<List<String>> childList = new ArrayList<List<String>>();

    public MyListAdapter(Context context) {
        this.context = context;

        groupList.add("The one group....");
        groupList.add("The two group....");
        groupList.add("The three group....");

        for (int i = 0; i < groupList.size(); i++) {
            List<String> strings = new ArrayList<String>();
            strings.add("This is one child... " + i);
            strings.add("This is two child... " + i);
            childList.add(strings);
        }

    }

    @Override
    public int getGroupCount() {
        return groupList.size();
    }

    @Override
    public int getChildrenCount(int i) {
   return childList.get(0).size();  //每一个Group 中的Child 数目相同
    }

    @Override
    public Object getGroup(int i) {
        return groupList.get(i);
    }

    @Override
    public Object getChild(int i, int i2) {
        return childList.get(i).get(i2);
    }

    @Override
    public long getGroupId(int i) {
        return i;
    }

    @Override
    public long getChildId(int i, int i2) {
        return i2;
    }

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

    //父listview视图
    @Override
    public View getGroupView(int groupPosition, boolean groupIsSelected, View view, ViewGroup viewGroup) {
        view = LayoutInflater.from(context).inflate(R.layout.grouplist, null);
        TextView textView = (TextView) view.findViewById(R.id.groupTextView);
        textView.setText(groupList.get(groupPosition));
        ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
        if (groupIsSelected) {
            imageView.setImageDrawable(context.getResources().getDrawable(R.drawable.select02));
        } else {
            imageView.setImageDrawable(context.getResources().getDrawable(R.drawable.select01));
        }
        return view;
    }

    //子listview视图
    @Override
    public View getChildView(int groupPosition, int childPosition, boolean childIsSelected, View view, ViewGroup viewGroup) {
        view = LayoutInflater.from(context).inflate(R.layout.childlist, null);
        TextView textView = (TextView) view.findViewById(R.id.childTextView);
        textView.setText(childList.get(groupPosition).get(childPosition));
        return view;
    }

    //此方法是用来触发子listview 是否可以点击的  默认为false
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

}

Activity

public class IndexActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ExpandableListView expandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
        expandableListView.setAdapter(new MyListAdapter(this));
        expandableListView.setGroupIndicator(null); //默认ExpandableListView的Group最前面有一个Indicator  可以去掉 也可以自定义
        //        expandableListView.setGroupIndicator(getResources().getDrawable(R.drawable.select));
        expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
            @Override
            public boolean onGroupClick(ExpandableListView expandableListView, View view, int groupPosition, long l) {
                Toast.makeText(IndexActivity.this, "第" + groupPosition + "组被点击", Toast.LENGTH_SHORT).show();
                return false;
            }
        });
        expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
            @Override
            public boolean onChildClick(ExpandableListView expandableListView, View view, int groupPosition, int childPosition, long l) {
                Toast.makeText(IndexActivity.this, "第" + groupPosition + "组第" + childPosition + "个被点击", Toast.LENGTH_SHORT).show();
                return false;
            }
        });

//        expandableListView.setSelectedGroup(0);                   //设置选择指定的组。
//        expandableListView.setSelectedChild(0, 0, true);           //设置选择指定的子项。
        expandableListView.expandGroup(0);                         //在分组列表视图中 展开一组
//        expandableListView.isGroupExpanded(0);                     //判断此组是否展开

    }
}

原文地址:https://www.cnblogs.com/lianghui66/p/3016275.html