0

後,我有一個簡單的FragmentPagerAdapter類FragmentPagerAdapter不從0開始位置的呼叫notifyDataSetChanged

public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     PagerAdapter fragment; 
       fragment = new PagerAdapter(data.get(position)); 

     return fragment; 
    } 


    @Override 
    public int getCount() { 
    return data.size(); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     if (position >= pageCount || position < 0) 
      return null; 
     return "Profile " + position; 
    } 

} 

即PagerAdapter是從碎片延伸的簡單的類。 然後我將SectionsPagerAdapter的實例設置爲ViewPager。

問題是在這裏:

起初我有一個頁面上查看傳呼機(數據大小爲1),當我得到更多的數據,我叫SectionsPagerAdapter例如notifyDataSetChanged,但在的getItem(INT位置)方法,而不是位置從0開始,從1開始!

我該怎麼辦?我想重新創建我的查看尋呼機後,我得到更多的數據 在此先感謝

+0

一套適配器再次代替notifyDataSetChanged –

+0

您需要設置適配器復位位置,notifyDataSetChanged用於通知適配器有一個數據變化,以便其僅重新綁定數據。 – Nithinlal

+0

你可以使用viewPager.setCurrentItem(0); – Nithinlal

回答

2

您需要再次設置適配器重置位置,notifyDataSetChanged用於通知適配器有一個數據更改,因此它只重新綁定數據。

或者您可以使用此代碼來移動視圖尋呼機你想

viewPager.setCurrentItem(0);

+0

我必須在notifyDataSetChanged()之後或之前調用viewPager.setCurrentItem(0)? 另一個問題是,我必須獲得適配器的另一個實例,並將其重新設置爲查看尋呼機,或者可以再設置一次? – MehDi

+0

您可以使用它都達到您的要求。 – Nithinlal

1

notifyDataSetChanged()只會通知所有已註冊的觀察者,該數據集已改變,無論觸摸viewPager位置的哪個位置。

有兩種不同的數據變化事件,項目變化 和結構變化。項目更改是當單個項目的 數據已更新但未發生位置更改時。結構 更改是在數據集 中插入,移除或移動項目時發生的。

你必須設置viewPager的位置notifyDataSetChanged()後,啓動頁面(位置0)手動

adapter.notifyDataSetChanged(); 
viewPager.setCurrentItem(0); 
+0

接受Nithinlal,因爲是第一個答案,謝謝你無論如何:) – MehDi