2011-12-12 8 views

답변

1

설정 부모를 도와주세요 iew vlayout PARAMS hieght 당신의 BaseExpandableListAdapter 당신에게 숨길 수 있도록 부모

+0

제가 parent.getLayoutParams()을 시도한 높이 = 0.; parent.invalidate(); 하지만이하지 않는 것을 : 나는 시도했다 : parent.setLayoutParams (새 ViewGroup.LayoutParams (ViewGroup.LayoutParams.FILL_PARENT, 0)); 하지만 ClassCastException이 시작됩니다. ( 실제로 시도 했습니까? 아니면 당신이 짐작 했습니까? – Giorgio

11

1)와 그룹 표시 감추기 제로 :

android:groupIndicator="@android:color/transparent" 

을 2) 다음과 같이 비어있는 그룹에 대해 빈 FrameLayout을 반환합니다.

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 

    //By default the group is hidden 
    View view = new FrameLayout(context); 

    String groupTitle = getGroup(groupPosition).toString(); 

    //in case there's more than one group and the group title is not empty then show a TextView within the group bar 
    if(getGroupCount() > 1 && !groupTitle.isEmpty()) { 

     view = getGenericView(); 
     ((TextView)view).setText(groupTitle); 
    } 

    return view; 

} 

3) 그룹 표시 줄을 표시되지 않는 그룹에 대한 expandGroup 전화 :

expandableListView.expandGroup(GROUP_ID); 

4) 당신이 getGroupView 방법에서 프로그래밍 방식으로 이미지 뷰를 추가 할 그룹 표시를 표시합니다. 그룹 표시기 숨기기/표시에 대한 자세한 내용은이 블로그 게시물을 확인하십시오. Hiding group indicator for empty groups

+0

FrameLayout을 반환하면 트릭을 보았습니다. 감사합니다. :) – Atmaram

+0

트릭을 주셔서 감사합니다. 이것이 나를 위해 일한 유일한 대답입니다. 어쨌든, 좀 이상하지 않니? 헤더를 숨기려면 왜 "공식적인"방법이 아닌지 이해할 수 없습니다. – kazbeel

+0

이것은 속임수입니다 : View view = new FrameLayout (context); – Derzu

9

나는이 문제를 해결했으며 이로 인해 내 문제가 해결되었습니다. ListView의 어댑터에서 getGroupView에 다음을 추가하십시오.

if (groupPosition == 0) { 
    convertView = layoutInflater.inflate(R.layout.blank_layout, null); 

} else { 
    convertView = layoutInflater.inflate(R.layout.group_indicator_cell,null); 
} 

이렇게하면 목록의 0 번째 그룹이 비워집니다.

여기서 blank 레이아웃은 layout_height = 0dp 인 내부보기가있는 레이아웃입니다. 그것은 작동합니다!

+0

방금 ​​시도했는데 실제로 작동하지만 확장 가능한 목록에 남아있는 보이는 그룹에 이상한 동작이 발생합니다. 그럼에도 불구하고 영리한 솔루션! – LargeGlasses

2

빈 레이아웃을 반환하는 대신 레이아웃에있는 모든 하위 항목을 검토하고 데이터가 없을 때 view.setVisibility(View.Gone)을 호출합니다.

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 

    LinearLayout lo; 

    if (convertView != null) { 
     lo = (LinearLayout) convertView; 
    } else { 
     lo = (LinearLayout) mLayoutInflater.inflate(R.layout.list_item_group_header, parent, false); 
    } 

    int visibility = mData.size() == 0 ? View.GONE : View.VISIBLE; 
    for (int i = 0; i < lo.getChildCount(); i++) { 
     lo.getChildAt(i).setVisibility(visibility); 
    } 
    return lo; 
} 
관련 문제