私はこれに従っています: 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...
});
}
この代替案でも同じ結果が得られます...何かアイデアはありますか?