2012-08-29 136 views
4

我目前的項目使用一些ListFragments來顯示數據行。 行每隔幾秒就會動態更新一次。行數隨每次更新和每個ListFragment而變化。動態更改ViewPagerIndicator標題

我想行的數量顯示給用戶,並認爲這對於一個完美的地方是旁邊Fragment的在ViewPagerIndicator稱號。我爲了更好的理解提供了一個示例圖像:

Viewpagerindicator

可悲的是,我很無能如何實現這一目標。 我試過如下:

public class PagerAdapter extends FragmentPagerAdapter { 
    private int numOne = 0; 
    private int numTwo = 0; 

    // ... 

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
     case 0: 
      return "List 1 (" + numOne + ")"; 
     case 1: 
      return "List 2 (" + numTwo + ")"; 
     default: 
      return ""; 
    } 

    public void setNumOne(int num) { 
     this.numOne = num; 
    } 

    public void setNumTwo(int num) { 
     this.numTwo = num; 
    } 
} 

當我現在所說的setNumXXX()方法,沒有任何反應,直到我片段之間移動,似乎什麼觸發getPageTitle()火。

我的問題是:如何在每次num值發生變化時強制更新標題?

回答

14

如果您在指標實例上調用notifyDataSetChanged(),它將重繪本身並獲取新標題。

+0

聽起來合乎邏輯,但我想我做錯了。如果我通過'mPagerAdapter.notifyDataSetChanged();在實例上調用它,'沒有任何變化,當我通過方法直接調用它時,它也不會改變'public void refresh(){this.notifyDataSetChanged(); '在PagerAdaper中。 – msal

+5

您應該在'TitlePageIndicator'實例本身中調用它,而不是適配器。 –

+0

非常感謝,傑克!現在它像一個魅力。你是最好的! :) – msal