Adopt StatisticsFragment with ViewPager2
This commit is contained in:
parent
cedfb27cca
commit
417c66d73a
|
@ -1,17 +1,17 @@
|
||||||
package de.danoeh.antennapod.fragment.preferences;
|
package de.danoeh.antennapod.fragment.preferences;
|
||||||
|
|
||||||
import android.content.res.Resources;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||||
import androidx.fragment.app.FragmentPagerAdapter;
|
import androidx.viewpager2.widget.ViewPager2;
|
||||||
import androidx.viewpager.widget.ViewPager;
|
|
||||||
|
|
||||||
import com.google.android.material.tabs.TabLayout;
|
import com.google.android.material.tabs.TabLayout;
|
||||||
|
import com.google.android.material.tabs.TabLayoutMediator;
|
||||||
|
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
import de.danoeh.antennapod.activity.PreferenceActivity;
|
import de.danoeh.antennapod.activity.PreferenceActivity;
|
||||||
|
@ -29,25 +29,34 @@ public class StatisticsFragment extends Fragment {
|
||||||
|
|
||||||
|
|
||||||
private TabLayout tabLayout;
|
private TabLayout tabLayout;
|
||||||
private ViewPager viewPager;
|
private ViewPager2 viewPager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
super.onCreateView(inflater, container, savedInstanceState);
|
super.onCreateView(inflater, container, savedInstanceState);
|
||||||
setHasOptionsMenu(true);
|
setHasOptionsMenu(true);
|
||||||
|
|
||||||
View rootView = inflater.inflate(R.layout.pager_fragment, container, false);
|
View rootView = inflater.inflate(R.layout.pager_fragment, container, false);
|
||||||
viewPager = rootView.findViewById(R.id.viewpager);
|
viewPager = rootView.findViewById(R.id.viewpager);
|
||||||
viewPager.setAdapter(new StatisticsPagerAdapter(getChildFragmentManager(), getResources()));
|
viewPager.setAdapter(new StatisticsPagerAdapter(this));
|
||||||
|
|
||||||
// Give the TabLayout the ViewPager
|
// Give the TabLayout the ViewPager
|
||||||
tabLayout = rootView.findViewById(R.id.sliding_tabs);
|
tabLayout = rootView.findViewById(R.id.sliding_tabs);
|
||||||
tabLayout.setupWithViewPager(viewPager);
|
new TabLayoutMediator(tabLayout, viewPager, (tab, position) -> {
|
||||||
|
switch (position) {
|
||||||
|
case POS_LISTENED_HOURS:
|
||||||
|
tab.setText(getString(R.string.playback_statistics_label));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
case POS_SPACE_TAKEN:
|
||||||
|
tab.setText(getString(R.string.download_statistics_label));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}).attach();
|
||||||
|
|
||||||
rootView.findViewById(R.id.toolbar).setVisibility(View.GONE);
|
rootView.findViewById(R.id.toolbar).setVisibility(View.GONE);
|
||||||
|
|
||||||
|
@ -60,39 +69,27 @@ public class StatisticsFragment extends Fragment {
|
||||||
((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.statistics_label);
|
((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.statistics_label);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class StatisticsPagerAdapter extends FragmentPagerAdapter {
|
public static class StatisticsPagerAdapter extends FragmentStateAdapter {
|
||||||
|
|
||||||
private final Resources resources;
|
StatisticsPagerAdapter(@NonNull Fragment fragment) {
|
||||||
|
super(fragment);
|
||||||
public StatisticsPagerAdapter(FragmentManager fm, Resources resources) {
|
|
||||||
super(fm);
|
|
||||||
this.resources = resources;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public Fragment getItem(int position) {
|
public Fragment createFragment(int position) {
|
||||||
if (position == 0) {
|
switch (position) {
|
||||||
|
case 0:
|
||||||
return new PlaybackStatisticsFragment();
|
return new PlaybackStatisticsFragment();
|
||||||
} else {
|
default:
|
||||||
|
case 1:
|
||||||
return new DownloadStatisticsFragment();
|
return new DownloadStatisticsFragment();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getCount() {
|
public int getItemCount() {
|
||||||
return TOTAL_COUNT;
|
return TOTAL_COUNT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public CharSequence getPageTitle(int position) {
|
|
||||||
switch (position) {
|
|
||||||
case POS_LISTENED_HOURS:
|
|
||||||
return resources.getString(R.string.playback_statistics_label);
|
|
||||||
case POS_SPACE_TAKEN:
|
|
||||||
return resources.getString(R.string.download_statistics_label);
|
|
||||||
default:
|
|
||||||
return super.getPageTitle(position);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
app:tabGravity="fill"
|
app:tabGravity="fill"
|
||||||
app:tabMode="fixed" />
|
app:tabMode="fixed" />
|
||||||
|
|
||||||
<androidx.viewpager.widget.ViewPager
|
<androidx.viewpager.widget.ViewPager2
|
||||||
android:id="@+id/viewpager"
|
android:id="@+id/viewpager"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0px"
|
android:layout_height="0px"
|
||||||
|
|
Loading…
Reference in New Issue