解決ListView嵌套ListView遇到的問題
Listview嵌套會造成的問題主要是子listview的高度錯誤導致內容不能正常顯示完,解決這個問題,我個人第一個想法就是重新計算子listview的高度,代碼如下:
private void setListViewHeightBasedOnChildren(ListView listView) {
if(listView == null) return;
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
父listview的adapter中getview方法調用
RelationAdapter relationAdapter = new RelationAdapter(context, model.relations);cell.xlistView.setAdapter(relationAdapter);setListViewHeightBasedOnChildren(cell.xlistView);
注意事項:
Adapter中getView方法返回的View的必須由LinearLayout組成,因為隻有LinearLayout才有measure()方法,如果使用其他的布局如RelativeLayout,在調用listItem.measure(0, 0);時就會拋異常。
效果圖:
最後更新:2017-04-03 07:57:00