5

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

public class ConnectionAdapter extends BaseExpandableListAdapter { 
    ... 
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, 
          ViewGroup parent) { 
     // convertView is a LinearLayout 
     convertView.setOnLongClickListener(new OnLongClickListener() { 
      public boolean onLongClick(View v) { 
       // my action here 
       return true; 
      } 
     }); 
    } 
    ... 
} 

ответ

1

Причина, по которой вашему коду не подвергнутые дальнейшей обработке каких-либо других событий «OnClick» потому, что вы пропускание «истинного» в вашем возвращении. Если вы укажете, что было обработано событие, ОС перестает пытаться продолжить дальнейшие процессы. Чтобы он обработал это событие, а также расширился, вам нужно изменить возврат к false вместо истинного

+3

Я попытался возвращение ложным. Но та же проблема сохраняется и для меня. Группа не будет расширяться после реализации onLongClicklistener для convertview –

+0

У меня такая же проблема, как только я реализую прослушиватель длинного клика на элементе группы, короткий щелчок (чтобы развернуть группу) перестает работать ... любая помощь оценивается. –

4

Вы можете установить setOnItemLongClickListener в свой расширенный список просмотров. ExpandableListView.PACKED_POSITION_TYPE_GROUP - это идентификатор группы, измените ее на ExpandableListView.PACKED_POSITION_TYPE_CHILD, и вы можете манипулировать с помощью longclicks на дочерних элементах группы.

Нечто подобное:

pager_income = (ExpandableListView) findViewById(R.id.income_scroll); 

    pager_income.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 
       // Your code with group long click 

       return true; 
      } 

      return false; 
     } 
    }); 
Смежные вопросы