492
Rozdział 12.
Adapter FragmentPagerAdapter
Kod naszego adaptera FragmentPagerAdapter
Chcemy, by nasza kontrolka
ViewPager
udostępniała cztery strony. Na pierwszej
z nich wyświetlimy fragment
TopFragment
, na drugiej
PizzaFragment
, na trzeciej
PastaFragment
, a na czwartej
StoresFragment
.
W tym celu zaimplementujemy adapter typu
FragmentPagerAdapter
, o nazwie
SectionsPagerAdapter
. Poniżej przedstawiliśmy jego kod (który już niebawem
dodamy do pliku
MainActivity.java):
private class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 4;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new TopFragment();
case 1:
return new PizzaFragment();
case 2:
return new PastaFragment();
case 3:
return new StoresFragment();
}
return null;
}
}
I to już cały kod adaptera
SectionsPagerAdapter
. Teraz musimy
użyć tego adaptera w kontrolce
ViewPager
.
app/src/main
MainActivity.java
WloskieCoNieco
java
com.hfad.wloskieconieco
Nasza kontrolka ViewPager będzie
udostępniać cztery strony, po jednej
dla każdego z fragmentów, pomiędzy
którymi chcemy się przemieszczać.
Chcemy, by fragment TopFragment był
wyświetlany jako pierwszy, dlatego
nową instancję tego fragmentu
zwrócimy dla pozycji o wartości 0.
Metoda getCount()
zwraca liczbę
stron, konkretnie 4,
dlatego metoda
getItem() powinna
zwracać fragmenty
jedynie dla pozycji
odpowiadających
dostępnym stronom.
¨
Dodanie fragmentów
¨
Dodanie przeciągania
¨
Dodanie kart
Biblioteka wsparcia wzornictwa
493
jesteś tutaj
¨
Dodanie fragmentów
¨
Dodanie przeciągania
¨
Dodanie kart
¨
Dodanie fragmentów
¨
Dodanie przeciągania
¨
Dodanie kart
Dodanie adaptera do kontrolki ViewPager
Naszym kolejnym zadaniem będzie dodanie i zastosowanie adaptera
SectionsPagerAdapter
w kontrolce
ViewPager
. Adapter typu
FragmentPagerAdapter
dołącza się do kontrolki
ViewPager
,
wywołując jej metodę
setAdapter()
i przekazując do niej instancję
adaptera.
Poniżej przedstawiliśmy kod, który odpowiada za dołączenie
adaptera do kontrolki
ViewPager
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
// dołączamy adapter SectionsPagerAdapter do kontrolki ViewPager
SectionsPagerAdapter pagerAdapter =
new SectionsPagerAdapter(getSupportFragmentManager());
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(pagerAdapter);
}
To już wszystko czego potrzebujemy, by móc przeciągać fragmenty.
Pełny kod aktywności
MainActivity
przedstawimy na następnej stronie.
app/src/main
MainActivity.java
WloskieCoNieco
java
com.hfad.wloskieconieco
Używamy fragmentów
z biblioteki wsparcia, więc do
adaptera musimy przekazać
referencję do menedżera
fragmentów odpowiedniego typu.
To wywołanie dołącza
do kontrolki ViewPager
utworzony wcześniej adapter
typu FragmentPagerAdapter.
P
: Kiedy należy używać kart
w aplikacji?
O
:
Karty spisują się doskonale, kiedy
chcemy zapewnić użytkownikom
możliwość poruszania się po stosunkowo
niewielkiej liczbie sekcji lub kategorii.
W takim przypadku każda z nich byłaby
zazwyczaj umieszczona na odrębnej
karcie.
P
: A co, gdybym dysponował
wieloma kategoriami? Czy wciąż
powinienem używać kart?
O
:
Możesz, choć warto także
rozważyć zastosowanie innych
sposobów nawigacji, takich jak szuflady
nawigacyjne. Są to panele wysuwane
z boku ekranu. Omówimy je dokładniej
w rozdziale 14.
P
: Wspominaliście o adapterze
FragmentStatePagerAdapter
.
Co to takiego?
O
:
Tego typu adaptery są bardzo podobne
do adapterów FragmentPagerAdapter,
choć obsługują także zapis i odtwarzanie
stanu fragmentów. Zużywają one
mniej pamięci niż adaptery typu
FragmentPagerAdapter, gdyż kiedy
strona nie jest wyświetlana, umieszczony na
niej fragment można usunąć. Adaptery tego
typu są bardzo użyteczne w przypadkach,
kiedy kontrolka ViewPager musi
udostępniać bardzo dużą liczbę stron.
głupie pytania
Nie istnieją
Get Android Programowanie aplikacji. Rusz głową! Wydanie II now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.