ListView嵌套ListView有关问题

ListView嵌套ListView问题
要实现在一个ListView里嵌套listView的功能,而且嵌套的listView有header和footer,footer是一个按钮,点击按钮,显示更多的item。但是子ListView的高度该如何设置呢。我使用了下面的方式

public class LvHeightUtil {

 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);
 }

}


但是添加完Header和footer之后,我只添加了一次,结果却出现了很多个header,上下滑动,header又变多了,好诡异。
有没有大神能提供一个设置子listview的方法,感激不尽~ListView嵌套ListView有关问题
------解决思路----------------------
不要做双层滑动嵌套,里面的那个list直接用动态添加view。
------解决思路----------------------
listView嵌套listView不怎么行的通,以前写过一个嵌套的,发现不行,就改addView()了
------解决思路----------------------
这是我当时做的demo,没用到convertView,如果数据不是很多的话也可以考虑这样

public View getView(final int position, View convertView, ViewGroup parent) {
convertView = View.inflate(getBaseContext(), R.layout.list_item_merge_contact, null);
LinearLayout layout = (LinearLayout) convertView.findViewById(R.id.merge_contact_sub_lstView);
final CheckBox checkBox = (CheckBox) convertView.findViewById(R.id.merge_checked);

// 根据每一组需要合并的联系人数量实例化用于显示联系人数据的布局文件
for (int i = 0; i < mergeList.get(position).size(); i++) {
View view = View.inflate(getBaseContext(), R.layout.list_item_sub_merge_contact, null);
TextView nameTxt = (TextView) view.findViewById(R.id.name_txt);
System.out.println("当前初始化的位置数据"+mergeList.get(position));
nameTxt.setText(mergeList.get(position).get(i));
// System.out.println(mergeList.get(position).get(i));
layout.addView(view);
}

checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
check.put(position, checkBox.isChecked());

System.out.println("点击时位置-->"+position);
System.out.println("点击时状态-->"+checkBox.isChecked());
System.out.println("存储的状态为-->"+check.get(position));
Toast.makeText(getBaseContext(), "当前为第"+position+"项,状态为"+checkBox.isChecked(), Toast.LENGTH_SHORT).show();
}
});

// 还原checkbox的选择状态
checkBox.setChecked(check.get(position,true));

System.out.println("滑动后位置-->"+position);
System.out.println("滑动后状态-->"+check.get(position));
return convertView;
}