我使用ViewPager
並在其中顯示許多不同的Fragments
,不僅在內容上,而且它們也使用不同的類。要顯示的清單應動態地改變,即使我設法四處交換項目,並添加新的適配器(並調用notifyDataSetChanged
),如果我嘗試改變下一個項目它仍然會滑到它使用mPager.setCurrentItem(mPager.getCurrentItem() + 1);
動態更改ViewPager的下一頁
我只是在當前項目和當前下一個項目之間添加一個新的Fragment
,它在適配器中正確顯示,但由於下一個已經預加載,因此適配器中的getItem
甚至沒有被調用。
是否有另一種方法比notifyDataSetChanged
「更強」,告訴我的ViewPager
它應該再次獲得下一個項目?
代碼示例:
的添加,讓我FragmentPagerAdapter
內項目的方法(只有樣品,而不是實際的代碼)
public void add(@NonNull Integer fragmentIndex) {
mFragmentOrder.add(fragmentIndex);
notifyDataSetChanged();
}
@Override
public Fragment getItem(int position) {
int selectedFragment = mFragmentOrder(position);
Fragment fragment;
switch (selectedFragment) {
case 1:
fragment = new FragmentA();
break;
case 2:
fragment = new FragmentB();
break;
case 3:
fragment = new FragmentC();
break;
default:
fragment = new FragmentD();
break;
}
return fragment;
}
這是用於進入下一個項目的功能(我不允許重擊)
public void goToNext() {
mPager.setCurrentItem(mPager.getCurrentItem() + 1);
}
EDITS:
編輯1:使用FragmentStatePagerAdapter
代替並設置OffscreenPageLimit
0我已經試過了,但都無濟於事。
編輯2:[解決方案]使用FragmentStatePagerAdapter
並覆蓋getItemPosition
函數返回POSITION_NONE
或在適當情況下的索引解決了該問題。由於某些原因,即使在執行此功能的正確版本之後,正常的FragmentPagerAdapter
仍然提供錯誤的Fragment
。
https://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html –
我已經嘗試過使用FragmentStateAdapter,它無法解決問題。正如我所說的,''ViewPager''不是爲新的「下一個」幻燈片重新調整適配器,它只是顯示已經預加載的那個。嘗試設置關閉頁面限制也沒有任何效果。 – Raeglan