我已經構建了左側導航欄的應用程序,其主要內容是ViewPager當計數相同時,您如何通知PagerAdapter碎片已更改?
ViewPager在兩個不同視圖之間滑動。
當用戶從導航欄中選擇一些內容時,我會向ViewPager的適配器發送一條消息(我試過FragmentPagerAdapter和FragmentStatePagerAdapter,但都不起作用),它設置一個內部變量並調用notifyDatasetChanged();
問題是getCount()方法總是返回2,所以當適配器檢查數據集是否發生了變化時,它會發現這些項仍然是2,並且不會繼續調用getItem(position)。
getItem(position)根據在notifyDatasetChanged()之前設置的內部變量的值返回不同的片段。
我試着覆蓋getItemId(位置)的情況下,尋呼機檢查ID,但它似乎沒有檢查計數後打擾。
有沒有辦法在調用notifyDatasetChanged()時強制適配器重新生成碎片?
預先感謝任何幫助,您可以提供
編輯:這裏是我目前使用的代碼:
public class ContentAdapter extends FragmentPagerAdapter {
private ViewedSection _section = ViewedSection.Main;
public ContentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
ViewedScreen screen = get_screen(position);
return screen == null ? null : FragmentFactory.GetFragment(get_screen(position));
}
@Override
public int getCount() {
return 2;
}
private ViewedScreen get_screen(int position) {
//code to resolve which screen will be shown according to the current position and _section
}
public void set_page(ViewedSection section) {
this._section = section;
notifyDataSetChanged();
}
}
因此,當用戶點擊的NavBar項目,我打電話((ContentAdapter 。)_pager.getAdapter())set_page(部);
當您選擇相應的導航抽屜項目時,您是否希望'ViewPager'在兩個視圖之間切換,或更改'PagerAdapter'中添加的'Fragment',因此它應該更新並顯示新的'Fragment'? –
你可以發佈一些代碼,所以我可以更好地理解這個問題? –
我想要做的是讓導航欄中的每個菜單項加載兩個不同的片段(viewpager將顯示),例如有一個名爲main的菜單項,它將顯示MenuFragment和SettingsFragment,當菜單項呼叫被選中,尋呼機應該在PlayFragment和ListFragment的片段之間切換 – Cruces