解决把listview放在ScrollView只显示一行的问题
2015-10-26 13:09
141 查看
这种问题是需要重新去计算 listview的条数,不管你是一次性加载,很多可以分页加载
这里只贴上关键的代码:
在用到的时候加上这样代码就行:
cList.addAll(caList);
cListAdapter.BindData(cList);
replyList.setAdapter(cListAdapter);
//接下来需要重新计算listview的宽高,因为当前的listView是嵌套在scrollviewL里面
setListViewHeightBasedOnChildren(replyList);
cListAdapter.notifyDataSetChanged();
这里只贴上关键的代码:
<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();
相关文章推荐
- Android使用第三方模拟器开发调试app
- wsdl地址如何在远程服务器上查看源码?
- 手机淘宝UWP
- Redis学习 -- 安装及基本使用
- 个人的兴趣、想要的不一样
- 【Linux】Ubuntu下使用QQ
- 基于FPGA的FIR设计二
- HDU 4436 str2int
- 2015年蓝汛面试题
- 技能学习过程
- 2015亚洲区北京站网络赛
- Android消息通信之无所不能的第三方开源项目EventBus
- json错误信息记录
- C# WPF 模拟键盘输入与UI控件进行交互
- 多个文件预览
- PowerDesigner中导入MYSQL数据库结构的步骤
- android开发游记:自定义实现图片轮播器和启动页面滚动
- Objective-C学习笔记之for( int )机制
- C#计算两个时间年份月份差
- 三星Galaxy Note5职场轻态度 对职场人士“减负”的启示