Migrated MarkerDetailActivity to ViewPager2.

This commit is contained in:
Dennis Guse
2025-06-25 19:41:45 +02:00
parent a2531c8651
commit fca4206c86
2 changed files with 15 additions and 30 deletions
@@ -24,9 +24,9 @@ import android.view.View;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager2.widget.ViewPager2;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -87,22 +87,13 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
} }
} }
final MarkerDetailPagerAdapter markerAdapter = new MarkerDetailPagerAdapter(getSupportFragmentManager()); final MarkerDetailPagerAdapter markerAdapter = new MarkerDetailPagerAdapter(this);
viewBinding.makerDetailActivityViewPager.setAdapter(markerAdapter); viewBinding.makerDetailActivityViewPager.setAdapter(markerAdapter);
viewBinding.makerDetailActivityViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { viewBinding.makerDetailActivityViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override @Override
public void onPageSelected(int position) { public void onPageSelected(int position) {
viewBinding.markerDetailToolbar.setTitle(markerAdapter.getPageTitle(position)); viewBinding.markerDetailToolbar.setTitle(markerAdapter.getPageTitle(position));
} }
@Override
public void onPageScrollStateChanged(int state) {
}
}); });
viewBinding.makerDetailActivityViewPager.setCurrentItem(markerIndex == -1 ? 0 : markerIndex); viewBinding.makerDetailActivityViewPager.setCurrentItem(markerIndex == -1 ? 0 : markerIndex);
@@ -121,32 +112,26 @@ public class MarkerDetailActivity extends AbstractActivity implements DeleteMark
runOnUiThread(this::finish); runOnUiThread(this::finish);
} }
/** private class MarkerDetailPagerAdapter extends FragmentStateAdapter {
* Marker detail pager adapter.
*
* @author Jimmy Shih
*/
private class MarkerDetailPagerAdapter extends FragmentStatePagerAdapter {
MarkerDetailPagerAdapter(FragmentManager fragmentManager) { MarkerDetailPagerAdapter(@NonNull FragmentActivity fa) {
super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); super(fa);
} }
@Override @Override
@NonNull @NonNull
public Fragment getItem(int position) { public Fragment createFragment(int position) {
return MarkerDetailFragment.newInstance(markerIds.get(position)); return MarkerDetailFragment.newInstance(markerIds.get(position));
} }
@Nullable
@Override @Override
public CharSequence getPageTitle(int position) { public int getItemCount() {
return getString(R.string.marker_title, position + 1, getCount()); return markerIds.size();
} }
@Override @Nullable //TODO Used?
public int getCount() { public CharSequence getPageTitle(int position) {
return markerIds.size(); return getString(R.string.marker_title, position + 1, getItemCount());
} }
} }
} }
@@ -36,7 +36,7 @@ limitations under the License.
android:orientation="vertical" android:orientation="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"> app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.viewpager.widget.ViewPager <androidx.viewpager2.widget.ViewPager2
android:id="@+id/maker_detail_activity_view_pager" android:id="@+id/maker_detail_activity_view_pager"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />