보기

2012-11-27 5 views
1

나는 다음과 같이 getGroup (...)를 지정된 사용자 정의 ExpandableListAdapter이의 레이아웃 유형을 찾을 수 getGroup (...) 메소드의 'convertView'매개 변수 (재사용되는 뷰 객체)가 올바른 레이아웃을 가지고 있지 않을 수도 있습니다. R.layout.tasks_list_group_without_child 또는 R.layout.tasks_list_group_with_child 레이아웃이있는보기가 있는지 어떻게 확인합니까?보기

API에서 "convertView : 가능한 경우 이전 뷰를 사용합니다.이 뷰는 null이 아니며 사용하기 전에 적절한 유형인지 확인해야합니다."그러나 어떻게?!

답변

1

, 귀하의 경우 그룹이에 그래서 :
- 2 이상 (1)
을 반환 getGroupTypeCount를 오버라이드 (override) - 당신이 필요로하는 각기 다른 레이아웃에 대해 다른 숫자를 반환하도록 getGroupType을 오버라이드하십시오. (2)
- 뷰를 부 풀릴 때 getGroupType을 호출하여 뷰의 종류를 알 수 있고 convertView가 null이 아니면 뷰는 뷰가됩니다. 안드로이드가 이것을 사용하여 diffe를 추적하기 때문에 원하는 유형 정의한보기의 종류를 임대하고 필요한 동일한 유형의보기를 재활용합니다.

1

당신은보기

view.setTag("TAG");

에 태그를 부착하고 convertView에서 검색 할 수 있습니다.

그것에 대해 더 읽기 : 당신이 BaseExpandableListAdapter를 사용하는 경우는보기 유형을 사용할 수 있습니다 here

0

이렇게하는 올바른 방법은 nininho가 언급 한 getGroupTypeCount 기술을 사용하는 것입니다. 그래도 빠르고 쉬운 방법을 원한다면 R.layout.tasks_list_group_with_child와 R.layout.tasks_list_group_without_child에 대해 하나의 레이아웃을 만들지 만 동일한 요소를 하나의 케이스에서 사라지게하고 다른 파트에서 볼 수있게하면 동일한 효과를 얻을 수 있습니다.