Это для планшета с Android 4.4.2. У меня есть ListView с сотнями элементов в нем, и около 20 видимых одновременно. Пользователь не хочет анимации гладкой прокрутки. Как программно установить отображаемую позицию в Listview без использования smoothScrollToPosition()?Программно заданное положение в ListView без прокрутки
Я искал Переполнение стека и Android ListView setSelection() does not seem to work они предложили это:
mListView.clearFocus();
mListView.post(new Runnable() {
@Override
public void run() {
mListView.setSelection(index);
}
});
. , , но он просто устанавливает выбор; он не отображает эту часть ListView. setSelection() кажется популярным решением по всему Интернету, но я не мог найти ничего в документации, говорящей, что setSelection() также устанавливает положение, и он ТОЛЬКО устанавливает выбор и не меняет позицию на моем ,
В Go to a item in Listview without using smoothScrollToPosition они предложили решение по Romain Guy ...
[myListView.post(new Runnable()
{
@Override
public void run()
{
myListView.setSelection(pos);
View v = myListView.getChildAt(pos);
if (v != null)
{
v.requestFocus();
}
}
});]
Проблема с этого является то, что мой ListView является частью ListActivity управляется с помощью пользовательского адаптера GetView(), так Представления, которые не видны, перерабатываются, т. Е. Если я запрашиваю дочерний вид представления, которого нет на экране, он возвращает null. Во всяком случае, это действительно ListView, который я пытаюсь контролировать, поэтому сделать это косвенно через дочерний вид кажется ужасно косвенным.
Как сообщить ListView, какую часть его я хочу видеть на экране?
Вы проверили [этот] (http://stackoverflow.com/questions/12706520/problems-with-listview-inside-a-popupwindow)? – m0skit0
@ m0skit0 Не похоже, что он пытался установить позицию; похоже, он пытался установить выбор. На мой вопрос я не вижу решения. Преобразованные элементы, прошедшие в getView, будут доступны только для видимых видов, поэтому, похоже, попытка решить это в getView ставит телегу перед лошадью. – user316117