2016-06-11 4 views
1

Ich habe eine Liste innerhalb einer Liste innerhalb einer Liste und so weiter. Es gibt ungefähr 5 Stufen.Wie implementiert man einen verschachtelten Master-Detailfluss auf Android?

Es ist einfach genug, 5 Aktivitäten für jede Liste auf Telefonen zu erstellen, aber was ist, wenn ich auch Tablets unterstützen möchte? Also müsste ich mit dem Master-Detailfluss arbeiten.

Ich kann jedoch keine Tutorials oder Informationen in Beziehungen zu einem geschachtelten Master-Detailfluss finden.

Wie auch immer, hier ist eine Darstellung von dem, was ich beschreibe:

enter image description here

Im Tablet-Layout, mag ich den Bildschirm 2 Reihen zu einem Zeitpunkt zu verschieben. Der Benutzer kann zur nächsten Stufe weitergehen, indem er ein Listenelement auf der rechten Stufe auswählt. Um zur vorherigen Stufe zurückzukehren, kann der Benutzer auf die Zurück-Schaltfläche tippen.

Irgendeine Idee, wie ich das erreichen kann?

Antwort

0

Nach einem ganzen Tag im Internet, habe ich endlich eine Lösung gefunden. Um einen "Nested Master Details Flow" -Effekt zu erhalten, verwenden Sie einfach einen ViewPager mit FragmentPageAdapter. Das Master-Detail Fluss wird wie folgt aussehen:

enter image description here

Um zu einem zwei-Panel-Modus zu ändern, wenn der Benutzer schaltet auf Landschaft, in Ihrer erweiterten FragmentPagerAdapter Klasse, überschreiben Sie die folgende Methode:

@Override 
public float getPageWidth(int position) { 
    DisplayMetrics metrics = getResources().getDisplayMetrics(); 
    // if the width is greater than 900dp halve the width of the page 
    if ((metrics.widthPixels/metrics.density) > 900) { 
     return (0.5f); 
    } 
    return super.getPageWidth(position); 
} 

zur Bereitstellung einer „Aufwärtstaste“ für die Ansicht Pager:

viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    // This method will be invoked when a new page becomes selected. 
    @Override 
    public void onPageSelected(int position) { 
     if (position == 0) { 
      getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
     } else { 
      getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     } 

    } 
}); 

Man kann sagen, die „Aufwärtstaste“ zurück zu gehen einer Seite wie diese (wo viewpager ist Mitglied variable Ihrer Aktivität, die einen Verweis auf Ihre ViewPager Halte):

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int position = viewpager.getCurrentItem(); 
    if (position > 0) viewpager.setCurrentItem(position-1); 
    return true; 
} 

REFERENZEN:

ViewPager with FragmentPagerAdapter

Display back button on action bar

Multiple-View ViewPager Options

How to implement a ViewPager with different Fragments/Layouts und example github project