Skip to content

Commit 178f74b

Browse files
committed
Disable list editing on export, optimize size
It was possible to delete or create lists during export which also made the UI much harder to use, as swiping could delete a list. Expands viewpager to allow passing a bundle. Also optimizes arraylist size for viewpager. Signed-off-by: Aron Heinecke <aron.heinecke@t-online.de>
1 parent 5bbdd42 commit 178f74b

File tree

3 files changed

+38
-8
lines changed

3 files changed

+38
-8
lines changed

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/activity/ExImportActivity.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import vocabletrainer.heinecke.aron.vocabletrainer.lib.Storage.GenericSpinnerEntry;
3636
import vocabletrainer.heinecke.aron.vocabletrainer.lib.ViewModel.FormatViewModel;
3737

38+
import static vocabletrainer.heinecke.aron.vocabletrainer.fragment.ListPickerFragment.K_SELECT_ONLY;
39+
3840
/**
3941
* Activity for import/export
4042
*/
@@ -85,7 +87,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
8587
* Init ViewPager
8688
*/
8789
private void initViewPager(){
88-
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),this);
90+
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),this,4);
8991
Intent intent = getIntent();
9092
boolean showImport = intent.getBooleanExtra(PARAM_IMPORT, true);
9193
if(showImport){
@@ -95,7 +97,9 @@ private void initViewPager(){
9597
} else {
9698
getSupportActionBar().setTitle(R.string.Export_Title);
9799
viewPagerAdapter.addFragment(ExportFragment.class, R.string.Export_Tab_Main);
98-
viewPagerAdapter.addFragment(ListPickerFragment.class,R.string.Export_Tab_List);
100+
Bundle args = new Bundle();
101+
args.putBoolean(K_SELECT_ONLY,true);
102+
viewPagerAdapter.addFragment(ListPickerFragment.class,R.string.Export_Tab_List,args);
99103
}
100104
viewPagerAdapter.addFragment(FormatFragment.class, R.string.ExImport_Tab_CustomFormat);
101105
viewPager.setAdapter(viewPagerAdapter);

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/fragment/ListPickerFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public class ListPickerFragment extends PagerFragment implements ListRecyclerAda
5252
private static final String P_KEY_SORTING_DIALOG = "sorting_dialog_list";
5353
private static final String K_PRESELECT = "preselect";
5454
private static final String K_MULTISELECT = "multiSelect";
55-
private static final String K_SELECT_ONLY = "select_only";
55+
public static final String K_SELECT_ONLY = "select_only";
5656
private static final int CODE_NEW_LIST = 1001;
5757

5858
private View view;

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/lib/Adapter/ViewPagerAdapter.java

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22

33
import android.content.Context;
44
import androidx.annotation.NonNull;
5+
import androidx.annotation.Nullable;
56
import androidx.annotation.StringRes;
67
import androidx.fragment.app.Fragment;
78
import androidx.fragment.app.FragmentManager;
89
import androidx.fragment.app.FragmentPagerAdapter;
10+
11+
import android.os.Bundle;
912
import android.util.Log;
1013

1114
import java.util.ArrayList;
@@ -16,31 +19,52 @@
1619
public class ViewPagerAdapter extends FragmentPagerAdapter {
1720
private final static String TAG = "ViewPagerAdapter";
1821

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;
2125
private Context context;
2226

2327
/**
2428
* Creates a new ViewPagerAdapter
2529
* @param manager FragmentManager
2630
* @param context Context required for StringRes resolve
2731
*/
28-
public ViewPagerAdapter(FragmentManager manager, Context context) {
32+
public ViewPagerAdapter(FragmentManager manager, Context context, int size) {
2933
super(manager);
3034
this.context = context;
35+
mFragmentClassList = new ArrayList<>(size);
36+
mFragmentTitleList = new ArrayList<>(size);
37+
mFragmentArguments = new ArrayList<>(size);
3138
}
3239

3340
@Override
3441
public Fragment getItem(int position) {
3542
Fragment frag = null;
3643
try {
3744
frag = mFragmentClassList.get(position).newInstance();
45+
Bundle args;
46+
if((args = mFragmentArguments.get(position)) != null) {
47+
frag.setArguments(args);
48+
}
3849
} catch (InstantiationException | IllegalAccessException e) {
3950
Log.wtf(TAG,"Error on fragment instantiation in ViewPagerAdapter",e);
4051
}
4152
return frag;
4253
}
4354

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+
4468
/**
4569
* Add Fragment instance to ViewPagerAdapter<br>
4670
* <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) {
4973
*/
5074
@SuppressWarnings("unused")
5175
public void addFragment(Class<? extends Fragment> frag,@StringRes int title ){
52-
addFragment(frag,context.getString(title));
76+
addFragment(frag,title, null);
5377
}
5478

5579
/**
5680
* Add Fragment instance to ViewPagerAdapter<br>
5781
* <b>Note:</b> the Fragment passed is not used directly, a new Instance will be used
5882
* @param frag
5983
* @param title
84+
* @param arguments
6085
*/
6186
@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) {
6388
mFragmentClassList.add(frag);
6489
mFragmentTitleList.add(title);
90+
mFragmentArguments.add(arguments);
6591
}
6692

6793
@Override

0 commit comments

Comments
 (0)