解决ScrollView嵌套ListView只显示加载数据其中的一个item

最近公司项目中在订单界面遇到这么一个问题,在ScrollView中嵌套ListView显示购买的多个商品,而scrollView中只显示了listview中的一个item,这是因为在ScrollView中嵌套ListView空间,无法正确的计算ListView的大小,故可以通过代码,根据当前的ListView的列表项计算列表的尺寸。

只要在listview设置适配器之后,在之后加上setListViewHeightBasedOnChildren(listview)这个方法就可以了。

 /**
     * 解决ScrollView嵌套ListView只显示一个item的问题
     * @param listView
     */
    public void setListViewHeightBasedOnChildren(ListView listView) {
        // 获取ListView对应的Adapter
        ListAdapter listadapter = listView.getAdapter();
        if (listadapter == null) {
            return;
        }

        int totalHeight = 0;
        for (int i = 0, len = listadapter.getCount(); i < len; i++) {
            // listAdapter.getCount()返回数据项的数目
            View listItem = listadapter.getView(i, null, listView);
            // 计算子项View 的宽高
            listItem.measure(0, 0);
            // 统计所有子项的总高度
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight+ (listView.getDividerHeight() * (listadapter.getCount() - 1));
        // listView.getDividerHeight()获取子项间分隔符占用的高度
        // params.height最后得到整个ListView完整显示需要的高度
        listView.setLayoutParams(params);
    }

参考文章:
http://blog.csdn.net/lch1251680944/article/details/52275654

解决GridView只显示一行的问题:设置其高度
//解决GridView只显示一行的原因 主动设置GridView的高度
        ViewGroup.LayoutParams params = holder.mGridView.getLayoutParams();
        View view = mAdapter.getView(0, null, holder.mGridView);
        view.measure(0,0);
        int height =view.getMeasuredHeight();
        int totalHeight = holder.mGridView.getVerticalSpacing() * 2 + height * 2;
        params.height = totalHeight;
        holder.mGridView.setLayoutParams(params);
    原文作者:破荒之恋
    原文地址: https://www.jianshu.com/p/2de25033774c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞