Android中ExpandableListView(原生控件)2----设置指示器

本文介绍了如何在Android中为ExpandableListView添加自定义指示器。通过在适配器中创建ImageView列表,根据组状态设置指示器图标,并在getGroupView中进行布局。同时提到了在activity中设置OnGroupClickListener的重要性,提供了源码下载链接和参考文章。
摘要由CSDN通过智能技术生成

效果图:
这里写图片描述

主要思路如下:
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值