2012-10-08 33 views
15

Estoy desarrollando una aplicación con un ViewPager para las tablas de desplazamiento lateral, a veces tengo que cambiar el adaptador para cargar un conjunto diferente de tablas. que he tratado de hacer lo siguiente:android viewpager cambia el adaptador

mViewPager.setAdapter(new pagerAdapterPushed(getSupportFragmentManager())); 
mViewPager.getAdapter().notifyDataSetChanged(); 
indicator.setViewPager(mViewPager); 
indicator.invalidate(); 
mViewPager.invalidate(); 

pero siempre volver a cargar los datos anteriores. ¿No es posible cambiar el adaptador de un ViewPager?

Respuesta

2

Debe sobrescribir public int getItemPosition (Object object) en el adaptador de localizador. Para cada elemento del viewpager, debe devolver POSITION_UNCHANGED (si todavía está en el busca) o POSITION_NONE (si se eliminó). De lo contrario, el buscapersonas no sabrá que algo ha cambiado. No recomendaría configurar un nuevo adaptador, simplemente borrando los datos en el anterior.

28

Exactamente igual que mi aplicación haciendo ...

Para el cambio ViewPagerAdapter, lo que hice es:

  1. Borrar todos los fragmentos en el interior del adaptador de corriente
  2. Conjunto adaptador de corriente a NULL
  3. Asignar adpater nuevo para ViewPager

    /* Clear all Fragments inside current adapter */ 
    public class MyPagerAdapter extends FragmentPagerAdapter 
    { 
        private ArrayList<Fragment> fragments=new ArrayList<Fragment>(); 
        //...some stuff 
    
        public void clearAll() //Clear all page 
        { 
        for(int i=0; i<fragments.size(); i++) 
        fragMan.beginTransaction().remove(fragments.get(i)).commit(); 
        fragments.clear(); 
        } 
    } 
    
    /* Set current adapter to null */ 
    Constants.VP.removeAllViews(); 
    Constants.VP.setAdapter(null); 
    
    /* Assign new adpater for ViewPager */ 
    Constants.PAGER=new MyewPagerAdapter(getSupportFragmentManager()); 
    Constants.VP.setAdapter(Constants.PAGER); 
    

creo que sirve ~

+3

Intenté su solución. Funciona perfecto sin ningún problema. muchas gracias –

+0

En API 18 no pude 'establecerAdaptador (nulo)'. Sin embargo, todo lo demás funcionó. Gracias. – ffleandro

+0

funcionó perfecto! ¡¡Tks !! – JannGabriel

-4

añadir esto a ver localizador para recargar para el próximo fragmento:

viewPager.setCurrentItem() 
-1

he encontrado una opción muy simple, no sé si es correcto o no, pero se puede acaba de volver a configurar el adaptador

mViewPager.setAdapter(mSectionsPagerAdapter); 

es ejemplo de proyecto de ejemplo Google pestañas Actividad para el botón FloatingActionButton

Cuestiones relacionadas