2012-10-05 2 views
4

확장 될 때 맨 위에 expandableListView 그룹을 배치하는 방법을 찾고 있습니다. onGroupExpand를 시도하거나 ExpandableListView의 performItemClick을 시도했습니다.ExpandableListView onExpand 항상 확장 된 그룹을 맨 위로 스크롤

setSelectedPositionFromTop (int, int), partialy 작동하지만 시스템이 시작될 때 시스템이 시작될 경우 자체 스크롤이며 목록이 오버 스캔되고 그룹이 화면 밖으로 나옵니다.

지저분한 설명을 드려 죄송합니다. 필요한 항목을 정확하게 표시하지 않고 말하기는 어렵습니다.

답변

-3

이 문제의 해결책이 있습니다. 그것은 부드러운 하나가 아니지만 꽤 잘 작동합니다. 확장 가능한 listView 메시는 하위 번호로 이동해야합니다. 그것은 시스템이 자식이 부모 (그룹)와 같은 높이라고 생각하기 때문에 다른 크기의 자식을 넣으면 자동 스크롤 목록에 문제가 발생할 것입니다.

내 솔루션은 더 많은 자녀가 있다고 생각하도록 목록을 속이기위한 것이 었습니다. 자녀가 그룹보다 두 배 큰 경우 그룹에 2 명의 자녀가 있다는 정보 만 반환합니다. 이제, 그것은 데이터 생성 목록이기 때문에, 나는 내 데이터를 확인합니다. 두 번째 자식에 대한 데이터가 있거나 2 번째 자식에 대한 데이터가 있는지, 아니면 두 번째 자식에 대한 데이터가없는 경우에만 1, 두 번째로 0 번 뷰를 넣을 수 있습니다. 어린이.

작은 그룹으로 List를 만들 때 큰 힘이 들었습니다.

내 질문에 대한 답변이 없기 때문에이 글을 올리면 도움이 될 수 있습니다.

+0

downvoting 주셔서 감사합니다. 아무도 도움을 줄 수 없으며 솔루션이 의도 한대로 작동하고 있습니다. – Drake29a

+0

위의 새로운 솔루션을 사용해보십시오. – thecoolmacdude

1

onGroupExpand (int groupPosition)에서 setSelection (groupPosition)을 시도해보십시오.

+0

내 그룹이 아래쪽에 있다고 가정하면, 같은 순간에 setSelection이 발생하고 그룹을 화면 밖으로 지나치게 스크롤하는 것보다 아이들을 나타 내기 위해 스크롤하는 것보다 더 효과가있는 경우가 있습니다. – Drake29a

+0

@ Drake29a 안녕하세요 문제가 해결되지 않습니까? 내 경우에도 그룹이 화면 밖으로 지나치게 많습니다? – Rajesh

+0

그것은 내 대답에 의해 해결되었습니다. 그것은 불쾌한 트릭 이었지만 다른 해결책은 없었습니다. 이전 코드에 대한 액세스 권한이 없으므로 다른 솔루션을 지금 확인할 수 없습니다. – Drake29a

5

transcriptmode를 disabled로 변경하십시오.

android:transcriptmode="disabled" 

확장 가능한 목록 레이아웃. 나는 많은 솔루션을 시도

public void onGroupExpanded(final int groupPosition) { 
    super.onGroupExpanded(groupPosition); 

    listView.setSelectedGroup(groupPosition); 
} 
+0

이 속성은 생략해도됩니다. 그것은 transcriptmode없이 나를 위해 일했다. – Amt87

+0

속성없이 어떻게 작동합니까? –

+0

@DennySharma 비활성화 된 모드가 기본 모드이기 때문에이 atribute를 생략 할 수 있습니다. 이것은 문서에서입니다 : "스크립트 모드를 비활성화합니다. 기본값입니다." 여기를 참조하십시오. http://developer.android.com/reference/android/widget/AbsListView.html#attr_android:transcriptMode –

3

어댑터에 넣고

public void onGroupExpand(final int groupPosition) { 
    super.onGroupExpand(groupPosition); 

    expandableListView.post(new Runnable() { 

     @Override 
     public void run() { 
      expandableListView.setSelection(groupPosition); 
      if(expandableListView.getChildAt(groupPosition)!=null) 
      expandableListView.requestChildRectangleOnScreen(expandableListView.getChildAt(groupPosition), 
        new Rect(0, 0, expandableListView.getChildAt(groupPosition).getRight(), expandableListView.getChildAt(groupPosition).getHeight()), false); 
     } 
    }); 
} 
1

하지만 아래의 코드는이 코드가 onGroupExpand 는 아래의 코드를 사용하여 일부 one.Implements OnGroupExpandListener에 도움이 될 것입니다 me.Hope 작동 :

관련 문제