時間:2015年12月22日16:12:34
- 問題描述:
1) 在android.support.v4.widget.NestedScrollView中直接嵌套ListView時出現的情況:listview顯示不全只有一行或者兩行。
2) 如果listview的item中有根據id選擇選項會導致選擇錯亂,現在(2015年12月22日16:13:55)碰到的問題是:listview中包含有switch控件,
用來對該item是否可用進行判斷,但是現在沖突導致的listview中位置錯亂。
2.解決方法: 計算出每一個item的高度,此方法用在listview.setAdapter()后。
private void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter(); //獲得Adapter
if (listAdapter == null) { //判斷是否為空
return;
}
int totalHeight = 0; //定義總高度
//根據listAdapter.getCount()獲取當前擁有多少個item項,然后進行遍歷對每一個item獲取高度再相加最終獲得總的高度。
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
//獲取到list的布局屬性
ViewGroup.LayoutParams params = listView.getLayoutParams();
//listview最終高度為item的高度+分隔線的高度,這是重新設置listview的屬性
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
//將重新設置的params再應用到listview中
listView.setLayoutParams(params);
}