Android ExpandableListview+Listview嵌套使用出现的问题解决办法

今天做项目时用到了二级分类列表,我的做法就是用ExpandableListview+Listview嵌套,的确是可行的,但是会出现listview永远只显示一行的高度。当时一看到这个问题,我就觉得是listview没有去计算父布局的高度,因此我写了个mylistview,继承listview
public class MyListView extends ListView {
    public MyListView(Context context) {
        super(context);
    }

    public MyListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
                MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

重写了onMeasure方法,就是让listview 的高度能匹配外免滑动层的高度。

经过测试,发现还是解决不了我的问题,listview始终只显示一行多一点。这个就很纠结了,问题很明显,listview作为expanablelistview的子布局,不能匹配它的高度。

突然想到,我可以试试把listview的高度固定,很明显,我这种想法又失败了。到这里就明白了,问题应该出在expandablelistview上面。

我想到,你既然始终只显示一行,那么我就把子布局的高度设为定值,这样是可以显示出来,但是会出现一个问题,它不能去适配lisview的高度。那这种方法又只有out了。

万般无奈,发狠了。你既然只显示一行,那我干脆点,把getchildCount的值设为1

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

    @Override
    public int getChildrenCount(int groupPosition) {
        return 1;
    }
经过测试发现竟然可以。纠结半天的问题竟然就这么解决了,内心是又激动又迷茫。不过自己细想了之后发现这么做是有道理的,既然expanablelistview的子布局里面是一个listview,那么它对应的childcount就应该是1才对。


本文只是为了记录自己的学习成长历程,每天多一点,未来美好一点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值