您的位置:首页 > 其它

根据item的高度以及长度设置listview的高度,

2016-06-06 13:37 387 查看
/*这个方法是写在适配器里面的,当需要使用的时候必须在setadapter以后进行调用*/
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()+listView.getDividerHeight()/2; //统计所有子项+dividerheight的总高度
}

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

listView.setLayoutParams(params);
}


使用此方法的需要在setAdapter以后进行调用,

建议在拿到数据后先调用setData后在进行调用

public void setData(List<E> datalist) {
this.datalist = datalist;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: