2017-09-28 1 views
2

Ich habe einen Viewpager mit zwei Fragmenten. Ich möchte jedes Fragment durch 3 verschiedene Fragmente ersetzen. Wie kann ich das tun? Kann ich auch die gesamte ArrayList mit der neuen Liste von Fragmenten nach einem Klick im aktuellen Fragment ändern?FragmentTransaction in ViewPager

Hier ist was ich getan habe.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View v = inflater.inflate(R.layout.fragment_healthy_mode, container, false); 

    swipeLeft = v.findViewById(R.id.leftSlide); 
    swipeRight = v.findViewById(R.id.rightSlide); 

    pageArray = new ArrayList<Fragment>(); 

    pageArray.add(new Female()); 
    pageArray.add(new Male()); 

healthyModeAdapter = new HealthyModeAdapter(getFragmentManager(), pageArray); 

    viewPager = (ViewPager) v.findViewById(R.id.healthyModeViewPager); 
    viewPager.setAdapter(healthyModeAdapter); 


// I want to replace female n male fragment with 

    pageArray.add(new EctoBodyFemale()); 
    pageArray.add(new EndoBodyFemale()); 
    pageArray.add(new MesoBodyFemale()); 

    pageArray.add(new EctoBodyMale()); 
    pageArray.add(new EndoBodyMale()); 
    pageArray.add(new MesoBodyMale()); 

Antwort

0

ViewPager unterstützt den Betrieb mit View s oder Fragment s, wenn ich mich richtig verstehen wollen Sie jede Seite jeweils drei Teilkomponenten, die statisch sind, in einem solchen Fall, dass Sie zwei Möglichkeiten:

verschachtelte Fragmente verwenden, erstellen Fragment für jede Seite, die Ihre Unterfragmente enthält. und verwenden Sie diese Elternfragmente als die Fragmente, die Sie für die Pageransicht bereitstellen

Beachten Sie, dass verschachtelte Fragmente nicht empfohlen werden, sie haben sich als fehlerhaft erwiesen und können die Leistung beeinträchtigen. Also schlage ich vor, dass Sie den View Ansatz verwenden, erstellen Sie einen xml, der die Fragmente definiert, und nachdem Sie ihn aufgeblasen haben, stellen Sie ihn direkt dem ViewPager zur Verfügung.

+0

Als Sie Herr. noch eine Frage, wie kann ich die ganze ArrayListe mit neuer Liste von Fragmenten nach dem Klick im aktuellen Fragment ändern? –

+0

'ViewPager' funktioniert sehr ähnlich wie' RecyclerView' Sie aktualisieren Ihre Liste, die von Ihrem Adapter verwendet wird, und rufen 'notifyDataSetChanged' auf dem Adapter auf –

Verwandte Themen