6

sto usando un adattatore per cercapersone frammento con 5 pagine. e im impostazione l'adattatore per visualizzare cercapersone come sottoRimuovere e aggiungere la pagina a 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; 
      } 

     } 

e nel frammento Creo un layout lineare individualmente per ogni pagina come sotto

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

e im impostando l'adattatore come sotto

m_oPager.setAdapter(m_oPagerAdapter); 

la mia domanda è come posso aggiungere e rimuovere la quinta pagina in modo dinamico ... come per qualche caso ho bisogno di pagina 5 e qualche caso ho bisogno di rimuovere la pagina 5.

risposta

4

Ho qualcosa che potrebbe aiutare, non sto cambiando il Fragment, semplicemente rimuovendolo e aggiungendolo di nuovo. Questo cambierà solo dall'ultima posizione. In altre parole, se avessi cinqueFragments e volessi rimuovere il terzo uno allora questo non funzionerà. Non sono sicuro che questa è la soluzione migliore, ma qui è quello che ho fatto:

mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

Poi, come un campione Sto utilizzando un aggiungere e rimuovere click metodo:

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(); 
} 

ho aggiunto un metodo setCount() al mio SectionsPagerAdapter:

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

Modificato getCount() ad e ha aggiunto un conteggio di default:

private int _count = 2; 

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

Ecco il mio pieno 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

hi ... grazie per la risposta ... ma ho cercato it..the problema è ..quando conteggio viene modificato e l'adattatore notfy si chiama la pagina non è in vista ma il contenuto della pagina viene visualizzato quando scrollo l'ultima pagina presente ... poiché l'adpatore ha l'ultima pagina creata all'inizio – user1340801

+0

Questo è strano, non ho la stessa reazione, non sono in grado per scorrere fino alla pagina che ho rimosso. – jnthnjns

+0

no non puoi screnslo ma quando allunghi lo scroll puoi vedere il contenuto di quella pagina ... non vedrai il titolo e tutto tranne il contenuto – user1340801

Problemi correlati