Ответ 1
Элементы группы являются подмножеством всех элементов, поэтому вышеприведенный метод следует вызывать в любом случае. Затем вы должны использовать getPackedPositionType, как указано выше, чтобы выяснить, выбран ли выбранный элемент, элемент или нуль.
Код для этого:
exList.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
int itemType = ExpandableListView.getPackedPositionType(id);
if ( itemType == ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
childPosition = ExpandableListView.getPackedPositionChild(id);
groupPosition = ExpandableListView.getPackedPositionGroup(id);
//do your per-item callback here
return retVal; //true if we consumed the click, false if not
} else if(itemType == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
groupPosition = ExpandableListView.getPackedPositionGroup(id);
//do your per-group callback here
return retVal; //true if we consumed the click, false if not
} else {
// null item; we don't consume the click
return false;
}
});
Если это группа, вы будете использовать getPackedPositionGroup, как указано выше, чтобы получить идентификатор группы, который долгое нажатие. Если это элемент, вы будете использовать комбинацию getPackedPositionGroup и getPackedPositionChild.