Расширяемый ListView

Я использую расширение expandableListView для дизайна пользовательского интерфейса, поэтому мне интересно, как расширяться список Android, есть ли способ разрешить только один элемент списка, т. Е. Когда вы нажимаете и расширяете элемент, все остальные элементы автоматически сворачиваются.

благодаря

Solutions Collecting From Web of "Расширяемый ListView"

Когда вы нажимаете один элемент, вы можете прокручивать все остальное и сворачивать каждый, кроме одного, который вы только что нажали …

list.setOnGroupExpandListener(new OnGroupExpandListener() { public void onGroupExpand(int groupPosition) { int len = mAdapter.getGroupCount(); for(int i=0; i<len; i++) { if(i != groupPosition) { list.collapseGroup(i); } } } }); 

Вы могли бы сделать так, как предположил Киран, или если у вас есть только один открытый за раз, вы можете просто отслеживать, какой из них вы последний раз нажали. Вы могли бы сделать это, объявив int lastclicked в классе, а затем в слушателе, как предложил корейский, поместите list.collapseGroup(lastclicked)

Я бы привел пример кода, но я нахожусь на своем мобильном телефоне. Сожалею.

Но я лично предпочитаю использовать последний метод, чем использовать цикл for. Это кажется более эффективным.

Прежде всего, реализуйте OnGroupExpandListener в своей деятельности, что позволит вам добавить свой метод по умолчанию, а после добавления этого метода по умолчанию вам нужно сделать так:

 @Override public void onGroupExpand(int groupPosition) { // TODO Auto-generated method stub int len = expadapter.getGroupCount(); for(int i=0;i<len;i++) { if(i!=groupPosition) { expandlst.collapseGroup(i); } } }