Ich habe eine Fragment
mit einer ViewPager
, die drei Fragment
s behandelt. Der erste von ihnen enthält eine RecyclerView
. Hier ist ein Code:ViewPager und RecyclerView extrange Verhalten
FragmentViewPager
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_player_view_pager, container, false);
ViewPager vpPager = (ViewPager) view.findViewById(R.id.playerViewPager);
adapterViewPager = new PlayerPagerAdapter(getFragmentManager());
vpPager.setAdapter(adapterViewPager);
return view;
}
FragmentPagerAdapter
// Returns the fragment to display for that page
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return FirstFragment.newInstance("0", "Page # 1");
case 1:
return SecondFragment.newInstance("1", "Page # 2");
case 2:
return ThirdFragment.newInstance("2", "Page # 3");
default:
return null;
}
}
FirstFragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_first, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
adapter = new FragmentAdapter(getActivity(), myList);
recyclerView.setItemAnimator(new SlideInUpAnimator(new OvershootInterpolator(1f)));
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
recyclerView.setAdapter(adapter);
loadData();
return view;
}
Und loadData
Methode ist ein API-Aufruf über AsyncTask
, die den Adapter auffüllt. Dies ist die OnPostExecute Methode:
myList = (ArrayList<>) result;
adapter.notifyDataSetChanged();
Das Problem ist, wenn ich die erste instanziiert ViewPager
nichts in dem ersten Fragment
auch den API-Aufruf zeigte und die notifyDataSetChanged()
Methode aufgerufen werden. Aber wenn ich zwischen den anderen Fragmenten scrolle und die FirstFragment
von der ViewPager
neu erstellt wird, dann werden die Daten angezeigt.
Haben Sie eine Idee, was hier passiert?
versuchen, verschiedene Fragmentklassen für jede Registerkarte nicht nur ein Fragment Instanzen. ich hoffe, es wird helfen –
Sorry masoud, ich hatte einige Fehler in meiner Frage :). Ich habe es bearbeitet. – jos