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);
         }
     }