9
erreicht ist

Ich habe einen RecyclerView in einem Fragment, die wiederum in einem ViewPager ist, wenn ich zwischen ViewPager Seiten streichen, ich sehe, dass onDetach von Fragment wird aufgerufen, aber aus irgendeinem Grund RecyclerView ist immer noch in dieser bestimmten Position für die Fragment in ViewPager vorhanden ist, auch die Scroll-Position von RecyclerView wird beibehalten, wenn ich zurück zu dem losgelösten Fragment komme.Android RecyclerView, die in einem Fragment ist, das in einem ViewPager ist nicht neu geladen/Ansichten auffrischen, wenn setOffscreenPageLimit

Ich verwende FragmentStatePagerAdapter für ViewPager und ich bin wieder POSITION_NONE von getItemPosition() aber es hat keine Wirkung.

Bitte helfen Sie mir, das Problem hier zu verstehen.

+0

Ich weiß, das nicht sicher, aber Ich vermute, dass FragmentManager einige Caching-Funktionen hat. gezeichnet. –

+0

Wie viele Seiten haben Sie in Ihrem Viewpager? – dilix

+0

Es ist ein unendlich scrollender ViewPager mit mehr Funktionalität. –

Antwort

0

FragmentStatePagerAdapter den Zustand speichert und die Fragmente zerstören; Es stellt auch den Zustand wieder her, wenn Fragmente neu erstellt werden, wodurch der Status der Recycleansicht wiederhergestellt wird (die Scrollposition).

Vom Endbenutzer ist es das gleiche Verhalten wie mit FragmentPageAdapter, die Fragmente im Speicher hält.

Es ist das normale und normalerweise gewünschte Verhalten.

1

Versuchen Sie diese Punkte.

1) MyAdapter extends FragmentStatePagerAdapter

2) Set Adapter von Fragmente mit getChildFragmentManager() zB: mViewPager.setAdapter(new MyAdapter(getChildFragmentManager(), getActivity(), this))

3) Von ViewpagerFrgment OverridesetUserVisibleHint Methode

@Override 
    public void setUserVisibleHint(boolean isVisibleToUser) { 
     super.setUserVisibleHint(isVisibleToUser); 
     if (isVisibleToUser) { 
      //Update Recyclerview 
     } else { 

     } 
    } 
+0

Es ist keine korrekte Antwort, Sie sollten bereit sein, Daten in Ihrem Fragment zu verwenden und nicht zu laden, wenn es für den Benutzer sichtbar ist. –