listview嵌套listview,子listview只顯示一個item問題

背景: 我在做項目的時候準備用listview嵌套一個listview,但是發現,子listview只顯示一條數據,於是,一猜又是計算高度出問題了。

處理辦法,當然是和scrollview嵌套listview類似的,去重新計算一下高度。

下面是我封裝成了工具類,方便隨時使用:

使用方法是,在子的childListview.setAdapter(adapter);之後再調用這個工具類setListViewHeightBasedOnChildren(childListview);即可解決問題。

import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;

/**
 * <p>ListView處理的工具類,防止ListView嵌套時,內部ListView顯示不完全</p>
 * 
 * <p>注意:該方法只能在ListView中Item爲線性佈局的時候有效,因爲線性佈局有onMesure()方法。</p>
 * 
 * @author whwei
 * 
 */
public class ListViewUtil {
	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);
	}
}

2016.4.24


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章