PageAdapter ViewPager non aggiornato
-
27-10-2019 - |
Domanda
Va bene, il problema è quasi lo stesso con questo post, ma la soluzione non ha risolto il mio problema.
Io uso FragmentPagerAdapter
con un List
tenendo il Fragment
S come il seguente mostrato.
public class ViewPageAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
...
}
E la mia Fragment
Sverra il metodo OnCreateView come questo.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
return inflater.inflate(theLayoutResourceId, container, false);
}
Se si utilizza il metodo in questo post (oltrepassare int getItemPosition(Object object)
ritornare POSITION_NONE
), Prenderòjava.util.ConcurrentModificationException
Dopo aver chiamato notifyDataSetChanged()
.
Il flusso di chiamate del metodo è così.
- a
ViewPager
Pagina Index 1, Apri aDialog
tramite clic aButton
(Allo stesso modo delLoginButton
Nell'esempio Android di Facebook) - Dopo la finestra di dialogo si è chiusa (
onAuthSucceed
), rimuovereViewPager
Pagina Indice 1 e e aggiungi un'altra pagina per essere l'indice della pagina 1 - Aggiornamento della forza utilizzando
notifyDataSetChanged
Ho provato molti altri modi per rimuovere un Fragment
Prima di aggiungere un Fragment
All'adattatore, ma la pagina non si aggiornerà al nuovo contenuto.
Ho appena trovato un metodo per rendere vuota la pagina ...
viewpager.removeViewAt(1);
viewpagerAdapter.removeItem(1);
viewpagerAdapter.addItem(1, new Fragment(...));
O risolvere il problema di aggiornamento o java.util.ConcurrentModificationException
sarebbe bello. Grazie per l'aiuto :)
Soluzione
Questo post è un po 'vecchio, ma nel caso in cui qualcuno si imbattesse in questo. Ho trovato la risposta in un post simile qui. Sembra che tu sia sulla strada giusta, ma devi cambiare il tuo frammentpageradapter in un frammentstatepageradapter e sovrascrivere il getItemposition (oggetto), come hai suggerito nel tuo post.
Buona fortuna a te.