6

Ich verwende einen Fragment Pager Adapter mit 5 Seiten. und im den Adapter Einstellung anzuzeigen Pager wie untenEntfernen und fügen Sie Seite zu FragmentPagerAdapter

public class xxx extends FragmentPagerAdapter 
    { 
     final int PAGE_COUNT_LOGGED_IN = 6; 
     final int PAGE_COUNT_LOGGED_OUT = 2; 
     TextView oTextView = null; 
     LayoutInflater inflater = null; 
     PagerTabStrip m_oPageTabStrip = null; 
     String m_strTab = null; 
     String[] m_strArray = null;  
     Context m_oContext = null; 

     /** Constructor of the class */ 
     public xxxx (Context context, android.support.v4.app.FragmentManager oFragmentManager) 
     { 
      super (oFragmentManager); 
      m_oContext = context; 
     } 

     /** This method will be invoked when a page is requested to create */ 
     @Override 
     public Fragment getItem(int arg0) 
     {  
      xxxxFragment myFragment = new xxxFragment(); 
      Bundle data = new Bundle(); 
      data.putInt("current_page", arg0+1); 
      myFragment.setArguments(data); 
      return myFragment; 
     } 

     /** Returns the number of pages */ 
     @Override 
     public int getCount() 
     {  
      if (Utility.m_bIsLoggedIn == true) 
      { 
       return PAGE_COUNT_LOGGED_IN; 
      } 
      else 
      { 
       return PAGE_COUNT_LOGGED_OUT; 
      } 
     } 

     @Override 
     public CharSequence getPageTitle(int position) 
     { 
      String strText = " "; 

      switch(position) 
      { 
      case 0: 
       strText = getBaseContext().getString(R.string.ccc); 
       break; 
      case 1: 
       strText = getBaseContext().getString(R.string.bbb); 
       break; 
      case 2: 
       strText = getBaseContext().getString(R.string.bbb); 
       break; 
      case 3: 
       strText = getBaseContext().getString(R.string.bbb); 
       break; 
      case 4: 
       strText = getBaseContext().getString(R.string.bbb); 
       break; 
      case 5: 
       strText = getBaseContext().getString(R.string.Sbbb); 
       break; 
      } 

     } 

und in Fragmente I erzeugen ein lineares Layout individuell für jede Seite, wie unten

bbb.m_oSharedPage = (LinearLayout) LayoutInflater.from(Utility.m_oService).inflate(R.layout.viewpage, null); 
          iView = Utility._YOURS_SHARED; 
          oCurrentPage = .m_oSharedPage; 

und im Einstellen den Adapters wie unten

m_oPager.setAdapter(m_oPagerAdapter); 

meine Frage ist, wie kann ich die 5. Seite dynamisch hinzufügen und entfernen ... wie für einige Fälle brauche ich Seite 5 und einige Fälle, die ich Seite 5 entfernen muss.

Antwort

4

Ich habe etwas, das helfen könnte, ich ändere nicht die Fragment, einfach entfernen und hinzufügen es zurück. Dies ändert sich erst ab der letzten Position. Mit anderen Worten, wenn Sie fünfFragments hatten und die dritte eins entfernen wollten, dann funktioniert das nicht. Ich bin mir nicht sicher, ob dies die beste Lösung ist, aber hier ist das, was ich getan habe:

mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

Dann wurde als Probe I ein Add verwende und entfernen click Methode:

public void remove(View v) { 
    // Change the count to whatever you would like 
    mSectionsPagerAdapter.setCount(1); 
    // Triggers a redraw of the PageAdapter 
    mSectionsPagerAdapter.notifyDataSetChanged(); 
} 

public void add(View v) { 
    // Change the count back to the initial count 
    mSectionsPagerAdapter.setCount(2); 
    // Triggers a redraw of the PageAdapter 
    mSectionsPagerAdapter.notifyDataSetChanged(); 
} 

I hinzugefügt ein setCount() Methode meiner SectionsPagerAdapter:

public void setCount(int count) { 
    this._count = count; 
} 

geändert getCount() zu und eine Standardanzahl hinzugefügt:

private int _count = 2; 

@Override 
public int getCount() { 
    return this._count; 
} 

Hier ist meine volle SectionsPagerAdapter:

public class SectionsPagerAdapter extends FragmentPagerAdapter { 
    private int _count = 2; 

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

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     return super.instantiateItem(container, position); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
     case 0: 
      return new FragmentOne(); 
     case 1: 
      return new FragmentTwo(); 
     default: 
      return null; 
     } 
    } 

    public void setCount(int count) { 
     this._count = count; 
    } 

    @Override 
    public int getCount() { 
     return this._count; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     switch (position) { 
     case 0: 
      return getString(R.string.fragment_title_one).toUpperCase(Locale.ENGLISH); 
     case 1: 
      return getString(R.string.fragment_title_two).toUpperCase(Locale.ENGLISH); 
     } 
     return null; 
    } 
} 
+1

hallo ... danke für die Antwort ... aber ich versucht habe it..the Problem ..when wird Zahl geändert wird und notfy Adapter wird der angerufene Seite wird nicht angezeigt, aber der Inhalt der Seite wird angezeigt, wenn ich die letzte Seite scrollte ... da der Adpater die letzte Seite am Anfang erstellt hat – user1340801

+0

Das ist seltsam, ich bekomme nicht die gleiche Reaktion, ich bin nicht in der Lage um zu der Seite zu blättern, die ich entfernt habe. – jnthnjns

+0

Nein, Sie können nicht scrollen, aber wenn Sie die Rolle verlängern, können Sie den Inhalt dieser Seite sehen ... Sie werden nicht den Titel und alle, aber nur den Inhalt sehen – user1340801

Verwandte Themen