效果图:
主要思路如下:
1在适配器中的构造方法中实例化一个list,用来装ImageView(指示器)
2在getGroupView中把ImageView(指示器)装到list中
ivList.add(groupPosition, groupViewHolder.ivIndicator);
3写一个setIndicatorState方法,根据状态判断指示器的图标,并在getGroupView调用
public void setIndicatorState(int groupPosition, boolean isExpanded) {
if (isExpanded) {
ivList.get(groupPosition).setImageResource(R.drawable.ic_expand_less);
} else {
ivList.get(groupPosition).setImageResource(R.drawable.ic_expand_more);
}
}
}
4在activity中调用setOnGroupClickListener(注意这个方法调用会使列表重新适配)
expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
Logger.t("111").d("groupPosition>>>" + groupPosition);
boolean groupExpanded = parent.isGroupExpanded(groupPosition);
// 设置指示器 位置,开关
adapter.setIndicatorState(groupPosition, groupExpanded);
return false;
});
下面贴一下源码:
IndicatorExpandActivity中
package com.zhh.expandable;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ExpandableListView;
import com.orhanobut.logger.Logger;
public class IndicatorExpandActivity extends Activity {
// 外层
public String[] groupStrings = {
"西游记", "水浒传", "三国演义", "红楼梦"};
// 内层
public String[][] childStrings = {
{
"唐三藏", "孙悟空", "猪八戒", "沙和尚"},
{
"宋江", "林冲", "李逵", "鲁智深"},
{
"曹操", "刘备", "孙权", "诸葛亮", "周瑜"},
{
"贾宝玉", "林黛玉", "薛宝钗", "王熙凤"}
};
private ExpandableListView expandableListView;
private IndicatorExpandableListAdapter adapt