См.: Android ListView: получить индекс данных видимого элемента и объединить его с частью ответа Feet выше, можно даст вам что-то вроде:
int wantedPosition = 10; // Whatever position you're looking for
int firstPosition = listView.getFirstVisiblePosition() - listView.getHeaderViewsCount(); // This is the same as child #0
int wantedChild = wantedPosition - firstPosition;
// Say, first visible position is 8, you want position 10, wantedChild will now be 2
// So that means your view is child #2 in the ViewGroup:
if (wantedChild < 0 || wantedChild >= listView.getChildCount()) {
Log.w(TAG, "Unable to get view for desired position, because it's not being displayed on screen.");
return;
}
// Could also check if wantedPosition is between listView.getFirstVisiblePosition() and listView.getLastVisiblePosition() instead.
View wantedView = listView.getChildAt(wantedChild);
Преимущество состоит в том, что вы не выполняете итерацию по дочерним элементам ListView, что может снизить производительность.
Быстрый поиск документов для класса ListView поднял getChildCount () и getChildAt () методы, наследованные от ViewGroup. Можно ли выполнить итерации через них использующий их? Я не уверен, но это стоит попытки.
Найденный им здесь
Это предполагает знание положения элемента в ListView:
View element = listView.getListAdapter().getView(position, null, null);
Тогда необходимо быть в состоянии назвать getLeft () и getTop () для определения элементов на экранном положении.