首页 > 其他分享 >Android 使用ListView只显示一条数据

Android 使用ListView只显示一条数据

时间:2023-03-23 15:46:10浏览次数:44  
标签:ListView 子项 null listAdapter 一条 params 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的情况。

标签:ListView,子项,null,listAdapter,一条,params,Android,listView
From: https://www.cnblogs.com/lxpblogs/p/17247687.html

相关文章