Для тех, кто столкнулся с той же проблемой, что и я, я оставлю это здесь:
Я пытался настроить OnItemLongClickListener для ExpandableListView и хотел знать, какая группа была нажата. Следуя советам многих вопросов здесь, на SO (например, этот вопрос), я использовал ExpandableListView.getPackedPositionGroup, однако всегда возвращал 0.
Вот код, который я использовал:
@Override
public boolean onItemLongClick(AdapterView<?> list, View view, int position, long id) {
Log.d(D, "position: "+position);
Log.d(D, "id: "+position);
Log.d(D, "unpacked position: "+ExpandableListView.getPackedPositionGroup(position));
switch(ExpandableListView.getPackedPositionType(position)) {
case ExpandableListView.PACKED_POSITION_TYPE_CHILD:
Log.d(D, "position type: child");
break;
case ExpandableListView.PACKED_POSITION_TYPE_GROUP:
Log.d(D, "position type: group");
break;
case ExpandableListView.PACKED_POSITION_TYPE_NULL:
Log.d(D, "position type: null");
break;
default:
Log.wtf(D, "position type: "+ExpandableListView.getPackedPositionType(position));
}
return true;
}
Я обнаружил, что позиция и идентификатор всегда имели одинаковое (правильное) значение. Однако тип всегда распознавался как группа, а неупакованная позиция всегда была 0.
Так что же не так с этим кодом?