• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.google.phonenumbers.demoapp.result;
2 
3 import androidx.annotation.NonNull;
4 import androidx.fragment.app.Fragment;
5 import androidx.fragment.app.FragmentManager;
6 import androidx.lifecycle.Lifecycle;
7 import androidx.viewpager2.adapter.FragmentStateAdapter;
8 import androidx.viewpager2.widget.ViewPager2;
9 import java.util.ArrayList;
10 
11 /** Adapter for the {@link androidx.viewpager2.widget.ViewPager2} used in {@link ResultActivity}. */
12 class ResultVpAdapter extends FragmentStateAdapter {
13 
14   private final ArrayList<Fragment> fragments;
15   private final ArrayList<String> titles;
16 
17   /**
18    * Constructor to set predefined Fragments and their titles.
19    *
20    * @param fragmentManager of {@link ViewPager2}'s host
21    * @param lifecycle of {@link ViewPager2}'s host
22    * @param fragments ArrayList of predefined Fragments (in correct order)
23    * @param titles ArrayList of titles of the predefined Fragments in param {@code fragments}
24    *     (respectively for the Fragment at the same position in param {@code fragments}
25    */
ResultVpAdapter( @onNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle, ArrayList<Fragment> fragments, ArrayList<String> titles)26   public ResultVpAdapter(
27       @NonNull FragmentManager fragmentManager,
28       @NonNull Lifecycle lifecycle,
29       ArrayList<Fragment> fragments,
30       ArrayList<String> titles) {
31     super(fragmentManager, lifecycle);
32     this.fragments = fragments;
33     this.titles = titles;
34   }
35 
36   /**
37    * Returns the predefined Fragment (set with constructor) at position param {@code position}.
38    * Returns a new Fragment if no predefined Fragment exists at position.
39    *
40    * @param position int position of the predefined Fragment
41    * @return Fragment at position param {@code position} or new Fragment if no predefined Fragment
42    *     exists at position
43    */
44   @NonNull
45   @Override
createFragment(int position)46   public Fragment createFragment(int position) {
47     if (position >= 0 && position < getItemCount()) {
48       return fragments.get(position);
49     }
50     return new Fragment();
51   }
52 
53   @Override
getItemCount()54   public int getItemCount() {
55     return fragments.size();
56   }
57 
58   /**
59    * Returns the predefined title (set with constructor) at position param {@code position}. Returns
60    * an empty String if no predefined Fragment exists at position.
61    *
62    * @param position int position of the predefined title
63    * @return String title at position param {@code position} or empty String if no predefined title
64    *     exists at position
65    */
getTitle(int position)66   public String getTitle(int position) {
67     if (position >= 0 && position < titles.size()) {
68       return titles.get(position);
69     }
70     return "";
71   }
72 }
73