私は Android プログラミングの初心者で、これがこのサイトでの最初の質問です。この問題の検索に多くの時間を費やしましたが、私のケースに合った答えが見つかりませんでした.
ViewPager には 2 つのページがあり、1 つは現在のページ用、もう 1 つは次のページ用です。2 番目のフラグメントが表示されたら、そのインデックスを 0 に設定し、最初のフラグメントを削除して、2 番目の代わりに新しいフラグメントを作成します。これが私のコードです。
mPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int pageSelected) {
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (position == 1) {
currentQuestFr = nextQuestFr;
nextQuestFr = newQuest();
mPager.setCurrentItem(0, false);
mPagerAdapter.notifyDataSetChanged();
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
そしてアダプター
private class QuestPagerAdapter extends FragmentStatePagerAdapter {
public QuestPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == 0) return currentQuestFr;
else return nextQuestFr;
}
@Override
public int getCount() {
return NUM_PAGES;
}
@Override
public int getItemPosition(Object object)
{
return POSITION_NONE;
}
}
コードはうまく機能しますが、それnotifyDataSetChanged()
を必要とせずにビューを更新するようです。ユーザーを少し悩ませます。ビューを再描画せずにアダプターを更新する方法、または同じ目的を達成する他の方法はありますか? どうもありがとう