forked from upstream-mirrors/OpenTracks
Migrated MarkerDetailActivity to ViewPager2.
This commit is contained in:
@@ -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" />
|
||||||
|
|||||||
Reference in New Issue
Block a user