Update itemDecoration lifecycle
- ItemDecorations for both layouts(grid/linear) should be removed first and then added.
- Adding tests for the same
Bug: 157515540
Test: atest
Change-Id: I768030d521db54af606753592db8a3c5eb1f25bc
diff --git a/car-ui-lib/src/com/android/car/ui/recyclerview/CarUiRecyclerView.java b/car-ui-lib/src/com/android/car/ui/recyclerview/CarUiRecyclerView.java
index 33b3348..3dd61fc 100644
--- a/car-ui-lib/src/com/android/car/ui/recyclerview/CarUiRecyclerView.java
+++ b/car-ui-lib/src/com/android/car/ui/recyclerview/CarUiRecyclerView.java
@@ -77,13 +77,13 @@
@CarUiRecyclerViewLayout
private int mCarUiRecyclerViewLayout;
- @Nullable
+ @NonNull
private GridOffsetItemDecoration mTopOffsetItemDecorationGrid;
- @Nullable
+ @NonNull
private GridOffsetItemDecoration mBottomOffsetItemDecorationGrid;
- @Nullable
+ @NonNull
private RecyclerView.ItemDecoration mTopOffsetItemDecorationLinear;
- @Nullable
+ @NonNull
private RecyclerView.ItemDecoration mBottomOffsetItemDecorationLinear;
@NonNull
private GridDividerItemDecoration mDividerItemDecorationGrid;
@@ -241,23 +241,26 @@
}
private void addItemDecorations(LayoutManager layout) {
+ // remove existing Item decorations
+ removeItemDecoration(mDividerItemDecorationGrid);
+ removeItemDecoration(mTopOffsetItemDecorationGrid);
+ removeItemDecoration(mBottomOffsetItemDecorationGrid);
+ removeItemDecoration(mDividerItemDecorationLinear);
+ removeItemDecoration(mTopOffsetItemDecorationLinear);
+ removeItemDecoration(mBottomOffsetItemDecorationLinear);
+
if (layout instanceof GridLayoutManager) {
if (mEnableDividers) {
- removeItemDecoration(mDividerItemDecorationGrid);
addItemDecoration(mDividerItemDecorationGrid);
}
- removeItemDecoration(mTopOffsetItemDecorationGrid);
addItemDecoration(mTopOffsetItemDecorationGrid);
- removeItemDecoration(mBottomOffsetItemDecorationGrid);
addItemDecoration(mBottomOffsetItemDecorationGrid);
setNumOfColumns(((GridLayoutManager) layout).getSpanCount());
} else {
if (mEnableDividers) {
addItemDecoration(mDividerItemDecorationLinear);
}
- removeItemDecoration(mTopOffsetItemDecorationLinear);
addItemDecoration(mTopOffsetItemDecorationLinear);
- removeItemDecoration(mBottomOffsetItemDecorationLinear);
addItemDecoration(mBottomOffsetItemDecorationLinear);
}
}