android listView多层嵌套listView显示不全问题

最近在做项目,需要用到listVIew多层嵌套listVIew的需求,先发现已下两个处理办法比较好用

第一种:

public class ListViewNesting extends ListView {

	public ListViewNesting(Context context) {
		super(context);
	}

	public  ListViewNesting(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public  ListViewNesting(Context context, AttributeSet attrs,
			int defStyle) {
		super(context, attrs, defStyle);

	}

	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
				MeasureSpec.AT_MOST);
		super.onMeasure(widthMeasureSpec, expandSpec);
	}

}
这个可以很好的解决嵌套时listView显示不全问题,以及子listView中含有异步加载的数据(比如网络图片、网络资料)等时,依然可以完整显示异步刷新
第二种:<span style="font-family: Arial, Helvetica, sans-serif;">重新计算Listview的高度</span><pre name="code" class="java">
在一个滑动布局中添加一个滑动控件,滑动控件的高度因为不能计算,所以只能显示一个Item,若要解决这个问题,我们可以重新计算Listview的高度,调用下面的静态方法即可。在setAdapter后调用此方法


/**
	 * scrollview嵌套listview显示不全解决
	 * 
	 * @param listView
	 */
	public static void setListViewHeightBasedOnChildren(ListView listView) {
		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);
	}


但是这个方法,对于异步加载,会存在显示不全问题

posted @ 2016-04-16 09:41  你好and程序员  阅读(628)  评论(0编辑  收藏  举报