Во-первых, ExpandableListView поддерживает простой способ расширить нужную группу:
mGattServicesList.expandGroup(groupPosition);
Программно щелкнуть элемент немного сложно. Вы на правильном пути, используя метод performItemClick(), но вы немного не в том, как его использовать. Я предполагаю, что вы не используете заголовки. Это еще больше усложняет дело.
Сначала вам нужно получить представление, по которому нужно щелкнуть. Как ни странно, это не требование. Вы можете безопасно вызывать performItemClick() с нулевым представлением. Единственным недостатком является то, что ваш дочерний прослушиватель кликов также получит нулевое представление.
//First we need to pack the child's two position identifiers
long packedPos = ExpandableListView.getPackedPositionForChild(int groupPosition, int childPosition);
//Then we convert to a flat position to use with certain ListView methods
int flatPos = mGattServicesList.getFlatListPosition(packedPos);
//Now adjust the position based on how far the user has scrolled the list.
int adjustedPos = flatPos - mGattServicesList.getFirstVisiblePosition();
//If all is well, the adjustedPos should never be < 0
View childToClick = mGattServicesList.getChildAt(adjustedPos);
Теперь нам нужна позиция и идентификатор для передачи на performItemclick(). Вы увидите, что шаги аналогичны получению представления. Так что на самом деле вам не нужно вводить это снова... но чтобы показать, что вам нужно:
//You can just reuse the same variables used above to find the View
long packedPos = ExpandableListView.getPackedPositionForChild(int groupPosition, int childPosition);
int flatPos = mGattServicesList.getFlatListPosition(packedPos);
//Getting the ID for our child
long id = mGattServicesList.getExpandableListAdapter().getChildId(groupPosition, childPosition);
Наконец, вы можете вызвать свой performItemClick():
performItemClick(childToClick, flatPos, id);
Я должен предварить, я не смог проверить этот код на IDE, поэтому могут быть некоторые синтаксические ошибки, которые помешают компиляции. Но в целом должен передать, к сожалению, не такие уж простые шаги в программном щелчке дочернего представления.
Последнее замечание: на предоставленном вами рисунке показано, что количество групп и детей начинается с 1. Имейте в виду, что на самом деле они считаются позициями с нулевым отсчетом. Таким образом, первая группа находится в позиции 0, а первый потомок каждой группы находится в позиции 0.
person
Jay Soyer
schedule
05.02.2015