2
2
3
3
import android .content .Context ;
4
4
import androidx .annotation .NonNull ;
5
+ import androidx .annotation .Nullable ;
5
6
import androidx .annotation .StringRes ;
6
7
import androidx .fragment .app .Fragment ;
7
8
import androidx .fragment .app .FragmentManager ;
8
9
import androidx .fragment .app .FragmentPagerAdapter ;
10
+
11
+ import android .os .Bundle ;
9
12
import android .util .Log ;
10
13
11
14
import java .util .ArrayList ;
16
19
public class ViewPagerAdapter extends FragmentPagerAdapter {
17
20
private final static String TAG = "ViewPagerAdapter" ;
18
21
19
- private final ArrayList <Class <? extends Fragment >> mFragmentClassList = new ArrayList <>();
20
- private final ArrayList <String > mFragmentTitleList = new ArrayList <>();
22
+ private final ArrayList <Class <? extends Fragment >> mFragmentClassList ;
23
+ private final ArrayList <String > mFragmentTitleList ;
24
+ private final ArrayList <Bundle > mFragmentArguments ;
21
25
private Context context ;
22
26
23
27
/**
24
28
* Creates a new ViewPagerAdapter
25
29
* @param manager FragmentManager
26
30
* @param context Context required for StringRes resolve
27
31
*/
28
- public ViewPagerAdapter (FragmentManager manager , Context context ) {
32
+ public ViewPagerAdapter (FragmentManager manager , Context context , int size ) {
29
33
super (manager );
30
34
this .context = context ;
35
+ mFragmentClassList = new ArrayList <>(size );
36
+ mFragmentTitleList = new ArrayList <>(size );
37
+ mFragmentArguments = new ArrayList <>(size );
31
38
}
32
39
33
40
@ Override
34
41
public Fragment getItem (int position ) {
35
42
Fragment frag = null ;
36
43
try {
37
44
frag = mFragmentClassList .get (position ).newInstance ();
45
+ Bundle args ;
46
+ if ((args = mFragmentArguments .get (position )) != null ) {
47
+ frag .setArguments (args );
48
+ }
38
49
} catch (InstantiationException | IllegalAccessException e ) {
39
50
Log .wtf (TAG ,"Error on fragment instantiation in ViewPagerAdapter" ,e );
40
51
}
41
52
return frag ;
42
53
}
43
54
55
+
56
+ /**
57
+ * Add Fragment instance to ViewPagerAdapter<br>
58
+ * <b>Note:</b> the Fragment passed is not used directly, a new Instance will be used
59
+ * @param frag
60
+ * @param title
61
+ * @param args
62
+ */
63
+ @ SuppressWarnings ("unused" )
64
+ public void addFragment (Class <? extends Fragment > frag ,@ StringRes int title , Bundle args ){
65
+ addFragment (frag ,context .getString (title ), args );
66
+ }
67
+
44
68
/**
45
69
* Add Fragment instance to ViewPagerAdapter<br>
46
70
* <b>Note:</b> the Fragment passed is not used directly, a new Instance will be used
@@ -49,19 +73,21 @@ public Fragment getItem(int position) {
49
73
*/
50
74
@ SuppressWarnings ("unused" )
51
75
public void addFragment (Class <? extends Fragment > frag ,@ StringRes int title ){
52
- addFragment (frag ,context . getString ( title ) );
76
+ addFragment (frag ,title , null );
53
77
}
54
78
55
79
/**
56
80
* Add Fragment instance to ViewPagerAdapter<br>
57
81
* <b>Note:</b> the Fragment passed is not used directly, a new Instance will be used
58
82
* @param frag
59
83
* @param title
84
+ * @param arguments
60
85
*/
61
86
@ SuppressWarnings ("unused" )
62
- public void addFragment (Class <? extends Fragment > frag , @ NonNull String title ) {
87
+ public void addFragment (Class <? extends Fragment > frag , @ NonNull String title , @ Nullable Bundle arguments ) {
63
88
mFragmentClassList .add (frag );
64
89
mFragmentTitleList .add (title );
90
+ mFragmentArguments .add (arguments );
65
91
}
66
92
67
93
@ Override
0 commit comments