2014-08-29 3 views
0

ExpandableListView처럼 헤더 뷰가 확장되고 retractet으로 만들려고합니다. 그러나 그냥 헤더보기와 다른 모든보기는 일반 목록 항목입니다.확장 가능한 헤더보기가있는 ListView

BaseExpandableListAdapter과 함께 ExpandableListView을 사용하고 목록에있는 다른 모든 항목을 자식이없는 그룹으로 취급합니다. 이것은 번거롭고 오류가 발생하기 쉽고 원치 않는 부작용이 있습니다.

은 또한 정상적인 ListView 내가보기의 확장 된 부분 setVisivility(View.VISIBLE) 헤더보기를 클릭 할 때 헤더에 대한보기를 사용했지만,이 영향이하지 않는 것 :

private View getHeaderView() { 

    final View v = layoutInflater.inflate(R.layout.headertest, null); 

    View v1 = v.findViewById(R.id.view1); 

    final View v2 = v.findViewById(R.id.view2); 

    v1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      Log.d("head", "click"); 
      v2.setVisibility(View.VISIBLE); 
      notifyDataSetChanged(); 

     } 
    }); 

    return v; 

} 

v1을 클릭하면 clickListener이 호출되었지만 v2의 표시 여부가 변경되지 않습니다. 나는 또한 모든 종류의 전망에 .invalidate()을 시도했지만 아무 소용이 없습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

답변

2

확장형 목록보기로 할 수 있습니다. 먼저 당신의 ListView에 표시 (열기/닫기 아이콘)를 비활성화

mExpList.setIndicator(null); 

다음, 헤더 (첫번째 그룹) 레이아웃의 이미지 (지표)가 그룹의 특별한 유형해야 할 것이다. (헤더는 물론 클릭 한 경우) 헤더의 이미지를 변경하는

@Override 
public int getGroupTypeCount() { 
    return 2; 
} 

@Override 
public int getGroupType(int groupPosition) { 
    if (groupPosition == headerPosition) { 
     return 1; 
    } else { 
     return 0; 
    } 
} 
또한 onGroupExpanded를 오버라이드 (override) 할 필요가

onGroupCollapsed : 기본적으로 당신은 그룹 뷰 2 종류를 갖고 싶어.

마지막으로 당신리스트 뷰의 OnGroupClickListener를 재정의해야합니다 :

mExpList.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { 
     @Override 
     public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { 
      if (groupPosition == header) { 

       // Click was not handled 
       return false; 
      } else { 
       // Do some normal stuff with items 
       // Click was handled group won't be (or tried to be) expanded 
       return true; 
      } 
     } 
    }); 

이 또한 좋은 생각이 어댑터는 헤더 아니다 0을 반환 getChildCount 오버라이드 (override)하는 것입니다.

희망이 도움이됩니다. 행운을 빕니다!

관련 문제