Screen Slide mit ViewPager

Hallo zusammen,

im folgenden Tutorial werde ich euch ein ganz einfaches Beispiel für einen neuen ViewPager vorstellen. Dieser arbeitet mit zwei Fragmenten, somit könnt ihr durch schnell durch die Fragmente wechseln.

Für einen Screen Slide benötigt man in Android einige Komponenten, in unserem Beispiel werden wir diese auf ein minimum beschränken, um die Anwendung so übersichtlich und einfach wie möglich zu gestalten.
Wir benötigen:

Eine Activity (vom Typ FragmentActivity)
Zwei Fragmente
Einen ViewPagerAdapter

Alle Dateien, die wir in diesem Tutorial besprechen, stehen unter als Anhang zur Verfügung. Jetzt können wir los legen.

1. ViewPagerAdapter

Wir werden mit der Klasse ViewPagerAdapter anfangen. Zu Beginn müssen die Support-Klassen importiert werden. Unsere Klasse ViewPagerAdapter erbt von der Oberklasse "FragmentsPagerAdapter". Ähnlich wie bei einem normalen Adapter, wird der FragmentsPagerAdapter dafür verwendet mehrere Seiten (Fragmente) einheitlich darzustellen.
Für die Implementierung unserer Klasse benötigen wir anfangs nur zwei Variablen, einmal eine Konstante "SEITENZAHL", welche die Anzahl unsere Seiten beinhaltet und einen String-Array Namens "fragmentTitel", welche wie der Name es schon sagt, die Titel der einzelnen Fragmente beinhaltet.

Beim Nutzen der Klasse "FragmentsPagerAdapter" müssen einige Methoden überschrieben werden, diese sind:
- getCount()
- getItem()
- getPageTitle()

In der Methode "getCount()" geben wir die Konstante "SEITENZAHL" zurück. Die Methode "getItem()" bestimmt, je nachdem welches Element beim ViewPager ausgewählt ist, das zuladende Fragment. Da wir in unserem Beispiel nur zwei Fragmente haben, wird zwischen den beiden Elementen unterschieden.
Die letzte Methode "getPageTitle()" gibt die Titel der einzelnen Fragmente wieder.

public class ViewPagerAdapter extends FragmentPagerAdapter { final int SEITENZAHL = 2; private String fragmentTitel[] = new String[] { "Erstes Fragment", "Zweites Fragment"};

public ViewPagerAdapter(FragmentManager fm)
{
super(fm);
}

@Override
public int getCount() {
return SEITENZAHL;
}

@Override
public Fragment getItem(int position) {
switch (position) {

case 0:
FragmentTab1 fragmenttab1 = new FragmentTab1();
return fragmenttab1;

case 1:
FragmentTab2 fragmenttab2 = new FragmentTab2();
return fragmenttab2;
}
return null;
}

@Override
public CharSequence getPageTitle(int pos)
{
return fragmentTitel[pos];
}
}

Das war die Klasse ViewPagerAdapter. Jetzt kommen die zwei Fragmente unseres Projektes, "FragmentTab1" und "FragmentTab2". Diese beiden Fragmente sind leer, um unser Projekt weiterhin simpel zu halten. Die XML-Dateien unserer Fragmente beinhalten nur eine TextView.

public class FragmentTab1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_fragment_tab1, container, false); return view; }

}

Weiter gehts mit der letzten Datei, nämlich der MainActivity. In der MainActivity erzeugen wir eine Instanz der Klasse "ViewPager", dieser verwendet unsere Klasse "ViewPagerAdapter".
Die XML-Datei unserer MainActivity beinhaltet einen ViewPager, welcher einen "PagerTabStrip" verwendet.

public class MainActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ViewPager viewPager = (ViewPager) findViewById(R.id.pager);

viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
}

}

Das war schon alles, wie bereits erwähnt ist das Beispiel sehr einfach gehalten, wenn ihr weitere Seiten hinzufügen wollt, müsst ihr lediglich das Array, die Konstante "SEITENZAHL" bearbeiten. Jedes neue Fragment wird in der Methode "getItem()" aufgenommen und das war es auch schon.

Viel Erfolg

Neuen Kommentar schreiben

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Suche

Neueste Kommentare

  • 4 weeks ago
    Transaction isolation level REPEATABLE-READ The recommended level for Drupal is "READ COMMITTED". (Drupal Status Report)

     Edit "/etc/my.cnf" ( under [mysqld] ):

    transaction_isolation="READ-COMMITTED"

    Restart MariaDB / MySQL:

  • 1 month ago
    Wget - Eine Webseite rekursive downloaden

    wget -U 'Mozilla/MyUserAgent' -P MyTempDir123 --wait=0.2 --random-wait -nd -r -x -l 4 -e robots=off --reject

  • 1 month ago
    Wget - Eine Webseite rekursive downloaden

    wget -U 'Mozilla/MyUserAgent2024' -P MyOutPutDirectory --wait=1 --random-wait -nd -r -l 2 -e robots=off --reject

  • 2 months 1 week ago
    CPU benchmarking with sysbench (single-threaded/all cores)

     

    # sysbench --threads="$(nproc)" cpu run

  • 2 months 1 week ago
    CPU benchmarking with sysbench (single-threaded/all cores)

    # sysbench --threads="$(nproc)" cpu run

  • 2 months 1 week ago
    Linux Autovervollständigung - bash autocomplete
    source ~/.bashrc

    Diese Lösung wird empfohlen aber hat bei mir nicht funktioniert.

    Welche Alternative gibt es?

  • 2 months 1 week ago
    PHP-CLI auf PHP8.2 umstellen (für Composer, Drush etc)

    ln -snf /opt/plesk/php/8.3/bin/php /etc/alternatives/php

  • 2 months 1 week ago
    Drush Update failed (require php >=8.2)

    In composer.json, update: 

     

  • 2 months 1 week ago
    Drupal: Anmeldung fehlgeschlagen Es hat mehr als 5 fehlerhafte Anmeldeversuche für dieses Benutzerkonto gegeben. Es ist vorübergehend gesperrt.
    drush sqlq "DELETE FROM flood"
  • 2 months 1 week ago
    Drupal SMTP + Gmail funktioniert nicht mehr (Passwort ist richtig); was ist die Lösung?