Pertanyaan Secara terprogram menciutkan grup di ExpandableListView


Ketika saya memperluas grup baru, bisakah saya menutup yang terakhir diperluas?


55
2017-11-30 14:29


asal


Jawaban:


Coba letakkan ini di Anda ExpandableListAdapter, listView adalah referensi ke ExpandableListView diri. Dan lastExpandedGroupPosition adalah variabel anggota integer yang didefinisikan di dalam Anda 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;
    }

119
2017-11-30 15:06



Sangat membantu, tetapi sebagai Tuan Anh sebutkan di komentar di atas, saya mengalami masalah dengan ExpandableListView tidak kemudian bergulir kembali ke bagian atas grup yang sedang dipilih (itu akan tetap pada posisi yang sedang digulir, di tengah-tengah grup di suatu tempat). Anda juga perlu menambahkan onGroupClickListener () untuk menggulir ke posisi yang benar:

@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;
}

20
2017-11-09 09:55



Ini bekerja untukku

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

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

17
2017-07-11 06:39



Lakukan ini untuk memperluas grup yang diklik dan menciutkan semua yang lain

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

Ini bekerja untukku.


4
2017-10-22 09:48



    @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);
    }

2
2017-12-17 13:58