Adaptador de cambio de viewpager android
Estoy desarrollando una aplicación con un ViewPager para las mesas de desplazamiento lateral, a veces necesito cambiar el adaptador para cargar un conjunto diferente de tablas. He intentado hacer lo siguiente:
mViewPager.setAdapter(new pagerAdapterPushed(getSupportFragmentManager())); mViewPager.getAdapter().notifyDataSetChanged(); indicator.setViewPager(mViewPager); indicator.invalidate(); mViewPager.invalidate();
Pero siempre vuelve a cargar los datos anteriores. ¿No es posible cambiar el adaptador de un ViewPager?
- Fragmentos de Viewpager no se muestran después de la primera vez
- Manejo simultáneo de eventos táctiles en varias vistas en Android
- ViewPager + FragmentStatePagerAdapter: ViewPager deja de funcionar cuando cambia la orientación de la pantalla
- FragmentPagerAdapter - cómo detectar un golpe o un clic de pestaña cuando el usuario va a una nueva pestaña?
- IllegalArgumentException: el radio debe ser> 0
- ¿Por qué parpadean los iconos / textos de las lengüetas de TabLayout al pasar entre páginas?
- OnTouchEvent se ejecuta cuando se pasa la página usando ViewPager y PassByValue
- Despliegue de la disposición de la barra de herramientas con Viewpager dentro de NestedScrollView
- ¿Por qué getCount se llama tantas veces en PagerAdapter?
- Android ViewPager con iconos
- Animación de Cube Flip para Fragments en Android
- Soporte de vista de Android para ViewPager
- ¿Cómo pasar argumentos de fragmentos mientras se utiliza un paginador de vista con diferentes fragmentos / layouts?
Exactamente como mi aplicación …
Para cambiar ViewPagerAdapter, lo que hice es:
- Borrar todo Fragmentos dentro del adaptador de corriente
- Establecer el adaptador de corriente a null
-
Asignar nuevo adpater 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);
Espero que ayude ~
Necesita sobrescribir public int getItemPosition (Object object)
en el adaptador de buscapersonas. Para cada elemento del viewpager, debe devolver POSITION_UNCHANGED
(si todavía está en el buscapersonas) o POSITION_NONE
(si se ha eliminado). De lo contrario, el buscapersonas de la vista no sabrá que algo ha cambiado. No recomendaría establecer un nuevo adaptador, simplemente borrar los datos en el antiguo.
Agregue esto para ver pager para recargar el siguiente fragmento:
viewPager.setCurrentItem()
- Cómo redimensionar un mapa de bits eficientemente y sin perder calidad en android
- Android – GC_FOR_ALLOC liberado 6346K, 7% gratis, pausado 143ms, total 143ms