Skip to content

Commit c600b38

Browse files
manabu-nakamuraimhappi
authored andcommitted
[Catalog][Carousel] Fix slider value out of bounds crash in carousel demos caused by state restore happening after resetting slider values
Resolves #4037 Resolves #4036 GIT_ORIGIN_REV_ID=b41cac6c34c66ffccdb6a7696cd554e620b2e0bc Co-authored-by: imhappi PiperOrigin-RevId: 625484603
1 parent 8c541e6 commit c600b38

File tree

3 files changed

+27
-6
lines changed

3 files changed

+27
-6
lines changed

catalog/java/io/material/catalog/carousel/HeroCarouselDemoFragment.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343
public class HeroCarouselDemoFragment extends DemoFragment {
4444

4545
private MaterialDividerItemDecoration horizontalDivider;
46+
private CarouselAdapter adapter;
47+
private Slider positionSlider;
4648

4749
@NonNull
4850
@Override
@@ -67,7 +69,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle bundle) {
6769
MaterialSwitch drawDividers = view.findViewById(R.id.draw_dividers_switch);
6870
MaterialSwitch enableFlingSwitch = view.findViewById(R.id.enable_fling_switch);
6971
AutoCompleteTextView itemCountDropdown = view.findViewById(R.id.item_count_dropdown);
70-
Slider positionSlider = view.findViewById(R.id.position_slider);
72+
positionSlider = view.findViewById(R.id.position_slider);
7173
RadioButton startAlignButton = view.findViewById(R.id.start_align);
7274
RadioButton centerAlignButton = view.findViewById(R.id.center_align);
7375

@@ -96,7 +98,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle bundle) {
9698
}
9799
});
98100

99-
CarouselAdapter adapter =
101+
adapter =
100102
new CarouselAdapter(
101103
(item, position) -> {
102104
heroStartRecyclerView.scrollToPosition(position);
@@ -141,6 +143,11 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle bundle) {
141143
v -> heroStartCarouselLayoutManager.setCarouselAlignment(ALIGNMENT_CENTER));
142144

143145
heroStartRecyclerView.setAdapter(adapter);
146+
}
147+
148+
@Override
149+
public void onStart() {
150+
super.onStart();
144151
adapter.submitList(CarouselData.createItems(), updateSliderRange(positionSlider, adapter));
145152
}
146153

catalog/java/io/material/catalog/carousel/MultiBrowseCarouselDemoFragment.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
public class MultiBrowseCarouselDemoFragment extends DemoFragment {
3838

3939
private MaterialDividerItemDecoration horizontalDivider;
40+
private CarouselAdapter adapter;
41+
private Slider positionSlider;
4042

4143
@NonNull
4244
@Override
@@ -61,7 +63,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle bundle) {
6163
MaterialSwitch drawDividers = view.findViewById(R.id.draw_dividers_switch);
6264
MaterialSwitch snapSwitch = view.findViewById(R.id.snap_switch);
6365
AutoCompleteTextView itemCountDropdown = view.findViewById(R.id.item_count_dropdown);
64-
Slider positionSlider = view.findViewById(R.id.position_slider);
66+
positionSlider = view.findViewById(R.id.position_slider);
6567

6668
// A start-aligned multi-browse carousel
6769
RecyclerView multiBrowseStartRecyclerView =
@@ -99,7 +101,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle bundle) {
99101
}
100102
});
101103

102-
CarouselAdapter adapter =
104+
adapter =
103105
new CarouselAdapter(
104106
(item, position) -> {
105107
multiBrowseStartRecyclerView.scrollToPosition(position);
@@ -120,6 +122,11 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle bundle) {
120122
CarouselDemoUtils.createScrollToPositionSliderTouchListener(multiBrowseStartRecyclerView));
121123

122124
multiBrowseStartRecyclerView.setAdapter(adapter);
125+
}
126+
127+
@Override
128+
public void onStart() {
129+
super.onStart();
123130
adapter.submitList(CarouselData.createItems(), updateSliderRange(positionSlider, adapter));
124131
}
125132

catalog/java/io/material/catalog/carousel/UncontainedCarouselDemoFragment.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838
public class UncontainedCarouselDemoFragment extends DemoFragment {
3939

4040
private MaterialDividerItemDecoration horizontalDivider;
41+
private CarouselAdapter adapter;
42+
private Slider positionSlider;
4143

4244
@NonNull
4345
@Override
@@ -62,7 +64,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle bundle) {
6264
MaterialSwitch drawDividers = view.findViewById(R.id.draw_dividers_switch);
6365
MaterialSwitch snapSwitch = view.findViewById(R.id.snap_switch);
6466
AutoCompleteTextView itemCountDropdown = view.findViewById(R.id.item_count_dropdown);
65-
Slider positionSlider = view.findViewById(R.id.position_slider);
67+
positionSlider = view.findViewById(R.id.position_slider);
6668

6769
RecyclerView uncontainedRecyclerView =
6870
view.findViewById(R.id.uncontained_carousel_recycler_view);
@@ -99,7 +101,7 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle bundle) {
99101
}
100102
});
101103

102-
CarouselAdapter adapter =
104+
adapter =
103105
new CarouselAdapter(
104106
(item, position) -> {
105107
uncontainedRecyclerView.scrollToPosition(position);
@@ -119,6 +121,11 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle bundle) {
119121
CarouselDemoUtils.createScrollToPositionSliderTouchListener(uncontainedRecyclerView));
120122

121123
uncontainedRecyclerView.setAdapter(adapter);
124+
}
125+
126+
@Override
127+
public void onStart() {
128+
super.onStart();
122129
adapter.submitList(CarouselData.createItems(), updateSliderRange(positionSlider, adapter));
123130
}
124131

0 commit comments

Comments
 (0)