android中scroll中的listview高度重新计算

在ScrollView中使用ListView时,需要计算每个item的高度以避免只显示一个item。当从服务器获取数据并更新adapter后,发现getView()未被调用,导致无法正确计算。解决办法是在adapter.notifyDataSetChanged()之后进行高度计算。此外,调用listItem.measure(0, 0)时遇到空指针异常,问题出在item的布局使用了RelativeLayout,改为LinearLayout即可避免,因为LinearLayout重写了onMeasure方法。" 82533736,5688695,复刻经典:SDLPAL 仙剑奇侠传开源项目编译指南,"['游戏开发', '开源项目', 'SDL', 'C++', '编译']
摘要由CSDN通过智能技术生成

大家都知道在ScrolleView中使用ListView需要计算listview每个item的高度,不然的话,listview只会显示一个item。所以我在初始化的时候调用了下面的方法计算了listView  item 的高度:

	// 获取ListView对应的Adapter
		ListAdapter homeAdapter = listView.getAdapter();
		if (homeAdapter == null) {
			return;
		}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值