listview嵌套listview子listview顯示不全的問題

前輩們給出了一個方法,重新計算子ListView的大小,然後在設置本ListView的Adapter之後運行這個方法就好了,具體代碼如下:

/**
 * 設置Listview的高度
 */
public void setListViewHeight(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);
}

這個方法設置的item的Layout必須是帶有onMeasure()方法的控件,否則在計算的時候會報錯,建議使用LinearLayout。

下面是我父listview的adpter的getview代碼

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    if (convertView == null) {
        holder = new ViewHolder();
        convertView = mInflater.inflate(
                R.layout.privatecustomer_item, parent, false);
        holder.bt1 = (Button) convertView.findViewById(R.id.bt_jiatingxinxi);
        holder.lv1 = (ListView) convertView.findViewById(R.id.lv_item_in_privatecustomer);
        holder.tv1 = (TextView) convertView.findViewById(R.id.tv1_main_tab03_item);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }
    holder.lv1.setAdapter(madpterson);
    setListViewHeight(holder.lv1);//子listview設置了adapter之後,再設置高度,就ok
    return convertView;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章