ExpandableListViewで開くのは一つだけにする

ExpandableListViewを使うと、折りたためるリストを作ることができます。

しかし、通常のExpandableListViewでは、タップするごとにリストが開いていきます。これはこれでいいのですが、あまりにもリストが多いとせっかく折りたためるようにしたのに画面が埋もれてしまうようになります。

そこで、最後にタップしたリストだけを開き、他の場所は全部閉じるようにする場合にどうやるかというと、こうやるのが良いようです。

この例ではExpandableListActivityを継承しているので、getExpandableListView()を使っていますが、そこは適宜読み替えてください。

    private int currentHourPosition = -1; // initial value

    @Override
    public void onGroupExpand(int groupPosition) {
        super.onGroupExpand(groupPosition);
        if(currentHourPosition != -1 && currentHourPosition !=
    groupPosition){
                getExpandableListView().collapseGroup(currentHourPosition);
        }
        currentHourPosition = groupPosition;
    }

つまり、最後に開いた場所を覚えておいてそれ以外を全部閉じるという、まあ、そのまんまですね。