Android ExpandableListView прослушиватель длинных групповых кликов предотвращает расширение - PullRequest
5 голосов
/ 24 февраля 2012

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

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

Ответы [ 2 ]

4 голосов
/ 21 ноября 2013

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

Примерно так:

    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;
        }
    });
1 голос
/ 19 марта 2012

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

...