3

私はこれに従っています: ExpandableListView でグループをプログラムで折りたたみます。ユーザーが一度に 1 つのグループだけを展開し、適切な位置までスムーズにスクロールできるようにしたい。OnGroupClickListener を実装するカスタム アダプターを作成しました。

public class CategoriesListAdapter extends BaseExpandableListAdapter implements OnGroupClickListener {

    private ExpandableListView expListView;
    private int lastExpandedGroupPosition = -1;

    // I get the expListView in the constructor...

    @Override
    public boolean onGroupClick(ExpandableListView parent, View view, int groupPosition, long id) {

        parent.smoothScrollToPosition(groupPosition);

        if (parent.isGroupExpanded(groupPosition)) {
            parent.collapseGroup(groupPosition);
        } else {
            parent.expandGroup(groupPosition);
        }

        return true;
    }

    @Override
    public void onGroupExpanded(int groupPosition) {

        if (groupPosition != lastExpandedGroupPosition) {
            expListView.collapseGroup(lastExpandedGroupPosition);
        }

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

残念ながら、onGroupClick イベントは決して発生しません... (メソッド内にいくつかのログを入れました)。私も試しました:

expListView.setOnGroupClickListener(new OnGroupClickListener() {
    @Override
    public boolean onGroupClick(ExpandableListView parent, View view, int groupPosition, long id) {
        // Same as above...
    });
}

この代替案でも同じ結果が得られます...何かアイデアはありますか?

4

1 に答える 1