summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
diff options
context:
space:
mode:
authorH. Lehmann <ByteHamster@users.noreply.github.com>2020-05-01 12:40:03 +0200
committerGitHub <noreply@github.com>2020-05-01 12:40:03 +0200
commitb870c233eed3e2ea085d41daf4c099f20b9794d4 (patch)
tree6703dbb336be1e69c034b7236850924c603f88ed /app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
parent95f269ae3025283daeb838a4197c183a92d1164d (diff)
parent7bdacf8fdebbf38ecdc797d2b67506e3eeffb5a6 (diff)
downloadAntennaPod-b870c233eed3e2ea085d41daf4c099f20b9794d4.zip
Merge pull request #4020 from ebraminio/rtl
Adopt the project with ViewPager2
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java76
1 files changed, 39 insertions, 37 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
index 275496f24..e98890627 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
@@ -6,13 +6,17 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentPagerAdapter;
-import androidx.viewpager.widget.ViewPager;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+import androidx.viewpager2.widget.ViewPager2;
+
import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.tabs.TabLayoutMediator;
+
import de.danoeh.antennapod.R;
public class EpisodesFragment extends Fragment {
@@ -27,7 +31,7 @@ public class EpisodesFragment extends Fragment {
private TabLayout tabLayout;
- private ViewPager viewPager;
+ private ViewPager2 viewPager;
//Mandatory Constructor
public EpisodesFragment() {
@@ -46,11 +50,32 @@ public class EpisodesFragment extends Fragment {
toolbar.setTitle(R.string.episodes_label);
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
viewPager = rootView.findViewById(R.id.viewpager);
- viewPager.setAdapter(new EpisodesPagerAdapter());
+ viewPager.setAdapter(new EpisodesPagerAdapter(this));
// Give the TabLayout the ViewPager
tabLayout = rootView.findViewById(R.id.sliding_tabs);
- tabLayout.setupWithViewPager(viewPager);
+
+ new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> {
+ switch (position) {
+ case POS_NEW_EPISODES:
+ tab.setText(R.string.new_episodes_label);
+ break;
+ case POS_ALL_EPISODES:
+ tab.setText(R.string.all_episodes_short_label);
+ break;
+ case POS_FAV_EPISODES:
+ tab.setText(R.string.favorite_episodes_label);
+ break;
+ default:
+ break;
+ }
+ }).attach();
+
+ // restore our last position
+ SharedPreferences prefs = getActivity().getSharedPreferences(TAG, Context.MODE_PRIVATE);
+ int lastPosition = prefs.getInt(PREF_LAST_TAB_POSITION, 0);
+ viewPager.setCurrentItem(lastPosition, false);
+
return rootView;
}
@@ -64,52 +89,29 @@ public class EpisodesFragment extends Fragment {
editor.apply();
}
- @Override
- public void onStart() {
- super.onStart();
-
- // restore our last position
- SharedPreferences prefs = getActivity().getSharedPreferences(TAG, Context.MODE_PRIVATE);
- int lastPosition = prefs.getInt(PREF_LAST_TAB_POSITION, 0);
- viewPager.setCurrentItem(lastPosition);
- }
-
- public class EpisodesPagerAdapter extends FragmentPagerAdapter {
+ static class EpisodesPagerAdapter extends FragmentStateAdapter {
- public EpisodesPagerAdapter() {
- super(getChildFragmentManager());
+ EpisodesPagerAdapter(@NonNull Fragment fragment) {
+ super(fragment);
}
- @Override
@NonNull
- public Fragment getItem(int position) {
+ @Override
+ public Fragment createFragment(int position) {
switch (position) {
- case 0:
+ case POS_NEW_EPISODES:
return new NewEpisodesFragment();
- case 1:
+ case POS_ALL_EPISODES:
return new AllEpisodesFragment();
default:
+ case POS_FAV_EPISODES:
return new FavoriteEpisodesFragment();
}
}
@Override
- public int getCount() {
+ public int getItemCount() {
return TOTAL_COUNT;
}
-
- @Override
- public CharSequence getPageTitle(int position) {
- switch (position) {
- case POS_ALL_EPISODES:
- return getString(R.string.all_episodes_short_label);
- case POS_NEW_EPISODES:
- return getString(R.string.new_episodes_label);
- case POS_FAV_EPISODES:
- return getString(R.string.favorite_episodes_label);
- default:
- return super.getPageTitle(position);
- }
- }
}
}