0

arraylist를 확장 가능한 목록 어댑터에 전달 중입니다. arraylist의 특정 위치에서 요소를 삭제 한 다음 notifyDataSetChanged()를 사용하여 어댑터에 알릴 때 확장 가능한 목록보기에서 grp의 상태가 올바르지 않습니다. 예를 들어요소를 삭제 한 후 확장 가능한 목록보기의 그룹 상태가 올바르지 않음

:

1 - 제 5 원소의 ArrayList를 구비하고 adaper 디스플레이 5보기 표시된다.

2 - 처음에는 모든 그룹이 접힌 상태가됩니다.

3 - 첫 번째 그룹을 확장 중입니다. [grp 1 - 확장, grp 2 - 축소, grp 3 - 축소, gr 4 4 - 축소, 5 - 축소).

4 - 이제 첫 번째 grp를 삭제합니다. 삭제 후, 내 arraylist 4 요소와 grp 2 grp1됩니다, grp 3 grp 2가됩니다. GRP의 SHD의 정확한 상태가 될 삭제 후 -

5 [GRP ​​1 - 붕괴는 GRP 2 - 붕괴 GRP 3 - 붕괴 GRP 4 - 축소 된, 그러나이 대신 제가 에게, 상태를 얻고 grp는 [grp 1 - 확장, grp 2 - 축소, grp 3 - 축소, grp 4 - 축소]입니다.

지옥 grp 1 (이전 grp 2) 확장 된 이유는 무엇입니까 ??? 접힌 상태 여야합니다.

저는 이것이 아주 작은 문제라고 생각하지만 해결책을 찾을 수 없습니다. 친절하게 해결책을 제안하십시오. 누구로부터 조기 회신해도 대단히 감사하겠습니다.

답변

0

notifyDataSetChanged()을 호출하면 데이터가 변경되었다는 것을 어댑터에 알리지 만보기에 대해서는 아무 것도 말해주지 않습니다. 따라서 어댑터는 첫 번째 그룹이 확장되었음을 기억하고 어댑터에 변경 사항을 알릴 때 새로운 데이터를 가져 와서 ExpandableListView을 채우므로 첫 번째 그룹이 계속 확장됩니다. https://stackoverflow.com/a/10905158/2197087

+0

내가 당신이 말한대로 수행하지만, 아직 같은 문제에 직면 한 :

해결책은 (상태를 복원 볼) 수동으로 확장 된 그룹 제어 여기를 참조하는 것입니다. 모든 그룹에 대해 Oncollapsegroup 메서드를 호출 한 후에도 어댑터는 여전히 하나의 그룹에 대해 getchildview 메서드를 호출하고 있으며 점점 커지고 있습니다. –