我有一个片段,其被添加作为一个ViewPager内的选项卡内部一个ListView。我希望用户通过简单地在选项卡窃听他们已经在(onTabReselected()),以能够滚动“backToTop”。我已经有一个工作代码来做到这一点;但是,我使用的代码花费的时间太长,无法回滚到位置0,这在小列表上非常整齐,但在250首歌曲集合中,它肯定会让用户恼火。实现一个“更快” backToTop - 的ListView
这里是我的代码:
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
switch (tab.getPosition()) {
case 0:
if (tab.getPosition() == mCurPagerItem) {
final ListView list = (ListView) findViewById(android.R.id.list);
list.smoothScrollToPosition(0);
}
break;
case 1:
if (tab.getPosition() == mCurPagerItem) {
final GridView list = (GridView) findViewById(R.id.artist_grid);
list.smoothScrollToPosition(0);
}
break;
case 2:
if (tab.getPosition() == mCurPagerItem) {
final ExpandableListView list = (ExpandableListView) findViewById(R.id.exp_list);
list.smoothScrollToPosition(0);
}
break;
default:
break;
}
}
我在哪里我的不同片段positons之间切换有不同的“列表”类型。正如我所说的,这段代码工作得很好,但有更快的方法可以回滚到顶部吗?这是更即时的东西。
只是为了澄清,当我说它“花费太长时间”时,这是因为smoothScrollToPosition本身是一个在列表中滚动的缓慢方式,据说可以使它更好看。
注意我曾尝试:
list.scrollTo(0, 0);
,但实际上似乎并没有做任何事情来ListView的当前位置。我想这是更多的视图调用,即一个ListView方法本身。
任何想法?
我可以我相信我以前没有尝试过,我想我应该再读一下这个方法的描述吧?我一直认为会将其标记为选中状态(如高亮显示和不显示)。谢谢! –
如果ListView控件不采取重点从触摸手势('setFocusableInTouchMode(假)'),那么将突出该行......这样你就不会太远了! :) – Sam