我有一個片段,其被添加作爲一個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