code

ExpandableListView에서 프로그래밍 방식으로 그룹 축소

codestyles 2021. 1. 5. 08:08
반응형

ExpandableListView에서 프로그래밍 방식으로 그룹 축소


새 그룹을 확장 할 때 마지막으로 확장 된 그룹을 축소 할 수 있습니까?


당신이 퍼팅보십시오 ExpandableListAdapter, listView받는 사람에 대한 참조입니다 ExpandableListView자체. 그리고 lastExpandedGroupPosition내부에 정의 된 정수 멤버 변수 ExpandableListAdapter입니다.

    @Override
    public void onGroupExpanded(int groupPosition){
        //collapse the old expanded group, if not the same
        //as new group to expand
        if(groupPosition != lastExpandedGroupPosition){
            listView.collapseGroup(lastExpandedGroupPosition);
        }

        super.onGroupExpanded(groupPosition);           
        lastExpandedGroupPosition = groupPosition;
    }

매우 도움이되었지만 Anh Tuan이 위의 주석에서 언급했듯이 ExpandableListView에 문제가 있었지만 현재 선택한 그룹의 맨 위로 스크롤하지 않았습니다 (현재 스크롤 된 위치, 어딘가에 그룹 중간에 있음). . 또한 올바른 위치로 스크롤하려면 onGroupClickListener ()를 추가해야합니다.

@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition,
        long id) {
    // Implement this method to scroll to the correct position as this doesn't
    // happen automatically if we override onGroupExpand() as above
    parent.smoothScrollToPosition(groupPosition);

    // Need default behaviour here otherwise group does not get expanded/collapsed
    // on click
    if (parent.isGroupExpanded(groupPosition)) {
        parent.collapseGroup(groupPosition);
    } else {
        parent.expandGroup(groupPosition);
    }

    return true;
}

이것은 나를 위해 일했습니다.

expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
    int previousItem = -1;

    @Override
    public void onGroupExpand(int groupPosition) {
        if(groupPosition != previousItem )
            expandableList.collapseGroup(previousItem );
        previousItem = groupPosition;
    }
});

클릭 한 그룹을 확장하고 다른 모든 그룹을 축소하려면 이렇게하십시오.

public void onGroupExpand(int groupPosition)
{
    for (int i = 0; i < len; i++)
    {
        if (i != groupPosition)
        {
            expandableListDetailsLevel.collapseGroup(i);
        }
    }
}

그것은 나를 위해 일하고 있습니다.


    @Override
    public void onGroupExpanded(int groupPosition) {
        for(int i=0;i<mGroupCollection.size();i++){
            if(i==groupPosition){
                System.out.println("Nothing");
                         }
            else{
                   mExpandableListView.collapseGroup(i);
            }

        }
        super.onGroupExpanded(groupPosition);
    }

ReferenceURL : https://stackoverflow.com/questions/4314777/programmatically-collapse-a-group-in-expandablelistview

반응형