【发布时间】:2013-05-24 10:54:11
【问题描述】:
所以我有一个 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);
}
有什么想法吗?
干杯
【问题讨论】:
标签: android android-listview android-adapterview android-scroll