前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决把listview放在ScrollView只显示一行的问题

解决把listview放在ScrollView只显示一行的问题

作者头像
wust小吴
发布2019-07-08 16:20:27
9870
发布2019-07-08 16:20:27
举报
文章被收录于专栏:风吹杨柳

这种问题是需要重新去计算  listview的条数,不管你是一次性加载,很多可以分页加载  

这里只贴上关键的代码:

代码语言:javascript
复制
<strong><span style="font-size:18px;">	/**
	 * 重新测量listview的高度  解决把listview放在ScrollView只显示一行的问题
	 * @param listView
	 */
	protected void setListViewHeightBasedOnChildren(ListView listView) {
		// TODO Auto-generated method stub
	       // 获取ListView对应的Adapter   
		WzCommentAdapter listAdapter = (WzCommentAdapter) 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); 
	}</span></strong>

在用到的时候加上这样代码就行:

cList.addAll(caList); cListAdapter.BindData(cList); replyList.setAdapter(cListAdapter); //接下来需要重新计算listview的宽高,因为当前的listView是嵌套在scrollviewL里面 setListViewHeightBasedOnChildren(replyList); cListAdapter.notifyDataSetChanged();

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年10月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档