Это сработало для меня.
listView.performItemClick(
listView.getAdapter().getView(position, null, null), position, position);
используйте адаптер, чтобы получить представление о положении предмета. Остальные 2 параметра мне не нужны, поэтому я оставил их пустыми. Если оставить convertView null, адаптер будет отображать новое представление. Это проблема производительности, но так как это происходит только время от времени, это не будет иметь большого эффекта. Мне не нужно указывать родителя для чего-либо, потому что я им не пользуюсь.
Позиция - это просто место, где находится ваш предмет.
Кроме того, эти 2 строки кода перед тем, как ваш executeItemClick создает иллюзию выбора элемента списка. Они также гарантируют, что соответствующий элемент находится на экране.
listView.requestFocusFromTouch();
listView.setSelection(position);