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

  • 1 month 2 weeks ago
    [preflight] The following restricted PHP modes have non-empty values: {open_basedir}. This configuration is incompatible with drush.

    Same with Drush 13 + PHP 8.3

  • 1 month 2 weeks ago
    Acronis CyberProtect Agent For Linux (Strato Root Server)

    Initializing...

    Error : Failed to install the required package 'RPM' by using APT. Please install it manually. 

    Exit


    Solution:

  • 1 month 2 weeks ago
    Acronis CyberProtect Agent For Linux (Strato Root Server)

    So habe es installiert und dann mit Hilfe von Key/Code (über Website von Acronis Cyber Protect) aktiviert:

  • 1 month 3 weeks ago
    No route found for the specified format html. Supported formats: csv, json. (Drupal Routing)

    I have a view with a path like /my-content-export to export entivies as JSON or CSV.

  • 1 month 3 weeks ago
    InvalidArgumentException: The controller for URI "/admin/flush" is not callable.

    admin_toolbar 3.5.2 is the reason. Patch coming ...

  • 2 weeks 1 day ago
    PDOException: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock

    Drupal 10.4:

  • 2 months 3 weeks ago
    Server install & config : Debian 12 + Plesk + Apache + nginx + MariaDB + Solr

    Tools & Settings >> Security Policy :

     Allow only secure FTPS connections 

  • 4 months 1 week ago
    MariaDB Server Performance Optimieren

     

    /usr/sbin/mariadbd --help --verbose | grep "query.*size"
  • 4 months 1 week ago
    MariaDB Server Performance Optimieren

    Commandline:

    systemctl restart mariadb
  • 4 months 1 week ago
    MariaDB Server Performance Optimieren

    After my changes in /etc/mysql/db-performance.cnf