フラグメント内にListViewがあり、ViewPager内にタブとして追加されています。ユーザーが既に表示されているタブ(onTabReselected())をタップするだけで、「backToTop」をスクロールできるようにしたいと思います。私はすでにこれを行うための実用的なコードを持っています。ただし、私が使用するコードは、位置0に戻るのに時間がかかりすぎます。これは、小さなリストではかなりきれいですが、250曲のコレクションでは、確かにユーザーを苛立たせる可能性があります。
これが私のコードです:
@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;
}
}
フラグメントごとに「リスト」タイプが異なるため、位置を切り替えます。私が言ったように、このコードは確かにうまく機能しますが、上にスクロールして戻るより速い方法はありますか?より瞬時なものです。
明確にするために、私が「時間がかかりすぎる」と言うとき、それは、smoothScrollToPosition自体がリストをスクロールするのに時間がかかるためであり、おそらく見栄えを良くするためです。
私が試したことに注意してください:
list.scrollTo(0, 0);
しかし、それは実際にはlistViewの現在の位置には何の影響も与えていないようです。それはもっとView呼び出しであり、ListViewメソッド自体だと思います。
何か案は?