Android 使用ListView只显示一条数据

情况一:ListView外嵌套了ScrollView导致

情况二:没有使用ScrollView

解决:动态获取ListView的高度,并用代码设置。在adapter中setAdapter之后调用以下方法即可。

 

setListViewHeightBasedOnChildren()方法如下:
复制代码
public static 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);
    }
复制代码

 

注意:ListView不能是根布局,否则会出现params为null的情况。

posted @   湘summer  阅读(211)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2022-03-23 试题 E: 迷宫
2022-03-23 二叉树的遍历(深搜+广搜)
点击右上角即可分享
微信分享提示