FragmentPagerAdapter notifyDataSetChanged no funciona

Tengo un FragmentPagerAdapter. Es método getItem puede devolver un fragmento de acuerdo a los datos que tiene desde el exterior. Después de actualizar los datos su supongo que para mostrar llamo notifyDataSetChanged y nada sucedió. HICE getItemPosition método getItemPosition para devolver POSITION_NONE :

 public static class TabsAdapter extends FragmentPagerAdapter implements TabHost.OnTabChangeListener, ViewPager.OnPageChangeListener { private final Context mContext; private final TabHost mTabHost; private final ViewPager mViewPager; private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); private PagerTabsFragments fragmentDisplayInfo = null; // for now only a // single size // back // stack static class PagerTabsFragments { public int tabPosition; public Fragment fragmentToDisplay; public Object fragmentInfo; public PagerTabsFragments(int tab, Fragment frag, Object info) { tabPosition = tab; fragmentToDisplay = frag; fragmentInfo = info; } } public void SetFragmentToDisplay(int tabPosition, Fragment frag, Object info) { fragmentDisplayInfo = new PagerTabsFragments(tabPosition, frag, info); notifyDataSetChanged(); } public void CancelFragmentToDisplay() { fragmentDisplayInfo = null; } ... @Override public Fragment getItem(final int position) { if ((fragmentDisplayInfo != null) && (fragmentDisplayInfo.tabPosition == position)) { return fragmentDisplayInfo.fragmentToDisplay; } final TabInfo info = mTabs.get(position); return Fragment.instantiate(mContext, info.clss.getName(), info.args); } @Override public int getItemPosition(Object item) { if (fragmentDisplayInfo == null) { return super.getItemPosition(item); } return POSITION_NONE; } ... 

Y la actualización desde fuera está en un evento de clic que establece el fragmentDisplayInfo var. Debuged y vi que el fragmentDisplayInfo es de hecho inicializado y el método getItemPosition devuelve POSITION_NONE , pero el método getItem ni siquiera se llama. ¿Porqué es eso?

2 Solutions collect form web for “FragmentPagerAdapter notifyDataSetChanged no funciona”

No estoy seguro acerca de esto, pero puede intentar utilizar FragmentStatePagerAdapter lugar de FragmentPagerAdapter . La cosa es, yo también he encontrado este problema, y ​​me ayudó

Lo que Nik Myers está diciendo es correcto. Sin embargo, falta una pieza. Cuando se llama notifyDataSetChanged, se llama al método getItemPosition. Debe anular esta opción para que los fragmentos se vuelvan a cargar.

  @Override public int getItemPosition(Object object) { // Causes adapter to reload all Fragments when // notifyDataSetChanged is called return POSITION_NONE; } 
  • NotifyDataSetChanged no puede actualizar ListView
  • Android: detecta si un ListView tiene la barra de desplazamiento (después de configurar nuevos datos)
  • Hace notificydatasetchanged llamada onCreateViewHolder al usar RecyclerView
  • RecyclerViewAdapter.notifyDataSetChanged () en una referencia de objeto nulo
  • Cómo proporcionar animación personalizada durante la clasificación (notifyDataSetChanged) en RecyclerView
  • Using notifyItemRemoved o notifyDataSetChanged con RecyclerView en Android
  • ¿Quieres implementar notifyDataSetChanged o autorefresh a mi RecyclerView pero no funciona
  • ¿Por qué no "notifyDatasetChanged ()" notifica todos los elementos visibles?
  • NotifyDataSetChanged- RecyclerView -¿Es una llamada asincrónica?
  • Emitir refrescando una vista de una fila en recyclerview
  • NotifyDataSetChanged () no funciona con mi adaptador para gridview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.