Android ListView SmoothScrollToPosition как выделить строку? - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть listView с choiceMode = "singleChoice". Когда пользователь нажимает на строку, вызывается onItemClick (), и фон устанавливается на цвет фона.

<ListView
    android:id="@+id/checklistListView"
    android:background="@color/white"
    android:orientation="vertical"
    android:choiceMode="singleChoice"
    android:listSelector="@color/selectionColor"
    android:scrollbarSize="40dp"
    android:scrollbarStyle="insideOverlay" />

У меня есть AutoCompleteTextView поиска, который позволяет пользователю выполнять поиск в списке имен. Когда пользователь выбирает имя, которое он ищет, я использую ListView.smoothScrollToPositionFromTop (), чтобы прокрутить этот элемент в ListView для просмотра.

checklistView.smoothScrollToPositionFromTop(curIndex, (checklistView.getHeight() / 2), 200);

Теперь я хочу выбрать этот элемент (например, установить выбранный цвет фона). Кажется, ничего не работает.

checklistView.getChildAt(curIndex)

возвращает ноль. Почему?

checklistView.setSelection(curIndex)

ничего не делает.

checklistView.performItemClick(...) 

выполняет onItemClick (), но не устанавливает для элемента выбранный цвет фона. Если впоследствии я коснусь / щелкну строку, которая была прокручена в поле зрения, она получит выбранный цвет фона.

Должен быть какой-то способ, чтобы элемент, который я только что прокрутил в поле зрения, был выделен программно.

...