Итак, у меня есть ListView, а также кнопки вверх и вниз.
Моя цель - прокручивать ListView по высоте каждый раз, когда я нажимаю одну из кнопок, простая навигация вверх/вниз.
Прокрутка вроде работает. Когда я нажимаю вниз, ListView прокручивается на правильное расстояние каждый раз, когда он прокручивается.
Однако только кнопка вверх работает по назначению. Кнопка «Вниз» имеет проблемы, которые, как мне кажется, связаны с первой видимой позицией прокрутки ListView, которая не обновляется.
Когда я нажимаю вниз, вызывается метод onNavigationDownPressed(), как показано ниже. Это прокручивает правильное количество вниз ListView с начальным ListView firstVisiblePosition в 0. В следующий раз, когда этот метод вызывается, первой видимой позицией будет по-прежнему 0.
Но если я вручную прокручиваю ListView немного вниз, а затем нажимаю вниз, он правильно прокручивается вниз, а затем то же самое, он больше не будет опускаться из-за того, что firstVisiblePostion не изменится, если я сначала не прокрутлю, чтобы сделать обновление позиции.
// Scroll up
@Override
public void onNavigationUpPressed()
{
Log.i("MAKE UP, FIRST VISIBLE POSITION: ", String.valueOf(listView.getFirstVisiblePosition()));
listView.setSelectionFromTop(listView.getFirstVisiblePosition(), fragmentHeight);
}
// Scroll down
@Override
public void onNavigationDownPressed()
{
Log.i("MAKE DOWN, FIRST VISIBLE POSITION: ", String.valueOf(listView.getFirstVisiblePosition()));
listView.setSelectionFromTop(listView.getFirstVisiblePosition(), -fragmentHeight);
}
Любые идеи?
Ваше здоровье