ListView只能显示第一个item问题(ScrollView嵌套ListView)

如果是新手朋友,那么请先检查你创建adapter的地方是不是有错误。没错的话那么出现这个问题一般是在scrollview中使用了listview导致,因为scrollview无法正确计算listview的高度。它不能计算,那么只能靠我们自己了,超简单。

下面是公司最近做的一个爱屁屁,要在scrollview中使用listview,为了正常实现功能,我们来自定义一个listview,重写它的onMeasure方法,代码如下:

public class ListViewForScrollView extends ListView {
    public ListViewForScrollView(Context context) {
        super(context);
    }

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

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

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

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

只需两行代码即可。再将其使用到布局当中:

<com.snda.gmm.common.widget.ListViewForScrollView
                        android:id="@+id/list"
                        android:layout_marginTop="4dp"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:divider="@null"
                        android:dividerHeight="1px"
                        app:adapter="@{listAdapter}" />

搞定,效果图如下:
这里写图片描述

怎么样,很简单吧,当然还有其他的办法,不过相对比较麻烦,推荐使用这样自定义的listview。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值