解决方案 »

  1.   

    第二个ExpandableListView加载是在自定义的ExpandableAdapter方法里: /**************************************** 以下为自定义方法 *********************************************/
    /**
     * Children 's View
     * 
     * @param string
     * @return
     */
    public View getGenericView(String string) {
    final View view ;
    if("基础施工部分".equals(string)||"电气施工部分".equals(string)){
    List<String> child = null;
    AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(
    ViewGroup.LayoutParams.FILL_PARENT, 64);
    view = new ExpandableListView(activity);
    // 次级父集合
    nextGroupArray = new ArrayList<String>();
    if ("基础施工部分".equals(string)) {
    nextGroupArray.add("    基础施工部分");
    } else if ("电气施工部分".equals(string)) {
    nextGroupArray.add("    电气施工部分");
    }
    // 次级子集合
    nextChildArray = new ArrayList<List<String>>();
    child = new ArrayList<String>();
    child.add("   安全评分");
    child.add("   质量评分");
    child.add("   文明施工评分");
    child.add("   物资返料评分");
    child.add("   经济处罚");
    nextChildArray.add(child);
    ExpandableAdapter adapter = new ExpandableAdapter(activity, nextGroupArray, nextChildArray);
    ((ExpandableListView) view).setAdapter(adapter);


    //组展开后重新设置高度
    ((ExpandableListView) view).setOnGroupClickListener(new OnGroupClickListener() { @Override
    public boolean onGroupClick(ExpandableListView parent, View v,
    int groupPosition, long id) {
    ConstructionWorkScore.resetjcHight();
    int oneSize = ((ViewGroup) view).getChildAt(groupPosition).getHeight();
    ViewGroup.LayoutParams params = view.getLayoutParams();
    int allHeight =(nextChildArray.get(groupPosition).size()+1)*oneSize;
    params.height =allHeight;
    view.setLayoutParams(params);
    v.setTag(view);
    return false;
    }

    });
    //组收缩调用的监听事件
    ((ExpandableListView) view).setOnGroupCollapseListener(new OnGroupCollapseListener() {

    @Override
    public void onGroupCollapse(int groupPosition) {
    ConstructionWorkScore.closeHight();
    }
    }); }else {
    AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(
    ViewGroup.LayoutParams.FILL_PARENT, 64);
    view = new TextView(activity);
    view.setLayoutParams(layoutParams);
    // Center the text vertically
    ((TextView) view).setGravity(Gravity.CENTER_VERTICAL);
    // Set the text starting position
    view.setPadding(36, 0, 0, 0);
    ((TextView) view).setText(string);
    }
    return view;
    }

    重新设置整个列表的方法(在第一个ExpandableListView的类中):
    /**
     * 打开基础评分
     */
    public static void resetjcHight() {
    if(openTimes>3){
    openTimes=3;
    }
    ViewGroup.LayoutParams params = scoreList.getLayoutParams();
    int avg = allHeight + oneSize *3*openTimes+50;
    params.height = avg;
    scoreList.setLayoutParams(params);
    openTimes=openTimes+1;
    }

    /**
     * 关闭基础评分
     */
    public static void closeHight() {
    ViewGroup.LayoutParams params = scoreList.getLayoutParams();
    int avg = allHeight;
    params.height = avg;
    scoreList.setLayoutParams(params);
    openTimes=openTimes-1;
    }
      

  2.   

    还可以这样么,你不如自定义一个ExpandableListView