Intereting Posts
Разница между build.gradle (Project) и build.gradle (Module) Как ускорить загрузку Android-браузера? Почему текущий год в дате был сохранен как 3912? Показать и скрыть панель действий при прокрутке содержимого пейджера Google Map API V2. Как сохранить маркер в центре экрана во время прокрутки карты? SetAdapter "Для вызова требуется уровень API 11 (текущий мин – 8): android.widget.AbsListView # setAdapter"? Студия Android не выполняет рендеринг макета Компиляция Android медленная (с использованием Eclipse) В Android 7 (уровень API 24) моему приложению не разрешено отключать звук телефона (установить режим звонка на тихий) Не удается разрешить метод show (android.support.v4.app.FragmentManager, java.lang.String) ViewPager в ListView – как заблокировать ось прокрутки? Android: обнаружение статуса «Не беспокоить»? Как WebView.getTitle () из потока пользовательского интерфейса? Чат для Android с использованием XMPP-сервера и облачных сообщений Google (или более новых Firebase Cloud Messaging) для Push-уведомлений Crashlytics не компилируются при использовании Jack

Свернуть все группы, кроме выбранной группы, в расширяемом списке

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

Если я выбираю необратимую группу, она должна расширяться, после того как я выберу вторую группу в то время, первая группа должна быть свернута. Я сделал Google, но я не мог найти то, что хочу. Пожалуйста, помогите мне.

Solutions Collecting From Web of "Свернуть все группы, кроме выбранной группы, в расширяемом списке"

Удерживайте текущую расширенную позицию группы в переменной. В onGroupExpanded выполните следующие действия.

private int lastExpandedPosition = -1; private ExpandableListView lv; //your expandable listview ... lv.setOnGroupExpandListener(new OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { if (lastExpandedPosition != -1 && groupPosition != lastExpandedPosition) { lv.collapseGroup(lastExpandedPosition); } lastExpandedPosition = groupPosition; } }); 

Используйте этот код, это будет работать

 expandableList.setOnGroupExpandListener(new OnGroupExpandListener() { int previousItem = -1; @Override public void onGroupExpand(int groupPosition) { if(groupPosition != previousItem ) expandableList.collapseGroup(previousItem ); previousItem = groupPosition; } }); 
 @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; } 
  elstListView1.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { for(int i=0;i<listDataHeader.size();i++){ if(i==groupPosition){ //do nothing} else{ elstListView1.collapseGroup(i); } } } }); 

Получите ExpendableListView а затем переопределите следующий метод: setOnGroupExpandListener

 expandableListView = (ExpandableListView) findViewById(R.id.exp_listview); expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { int previousItem = -1; @Override public void onGroupExpand(int groupPosition) { if (groupPosition != previousItem) expandableListView.collapseGroup(previousItem); previousItem = groupPosition; } }); 

Попробуйте поместить это в свой ExpandableListAdapter, listView – это ссылка на сам ExpandableListView. И lastExpandedGroupPosition – это целочисленная переменная-член, определенная внутри вашего 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; } 

Если ExpandableListView имеет более двух групп:

 expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { @Override public void onGroupExpand(int groupPosition) { for (int g = 0; g < expandableListAdapter.getGroupCount(); g++) { if (g != groupPosition) { expandableListView.collapseGroup(g); } } } }); 

Он разрушит все группы, кроме щелчка.

Я также столкнулся с той же проблемой. Но я мог решить свою проблему по следующему коду:

Поскольку у меня было 4 заголовка в моем расширяемом списке, на основе того, что я написал так

 expListView.setOnGroupExpandListener(new OnGroupExpandListener() { @Override public void onGroupExpand(int groupPos) { // TODO Auto-generated method stub expListView.collapseGroup(groupPos+1); expListView.collapseGroup(groupPos-1); expListView.collapseGroup(groupPos-2); expListView.collapseGroup(groupPos+2); expListView.collapseGroup(groupPos+3); expListView.collapseGroup(groupPos-3); } });`