Resolve NPE in GridDividerItemDecoration#drawHorizontalDividers.
- Guard against case where number of items is less than number of
columns in a gridlayout.
- Revert enabling dividers for CarUiRecyclerView.
Bug: 146561570
Test: Manual
Change-Id: I7d891df18ff634f32ce631020f0aae4084cc78a3
diff --git a/car-ui-lib/res/layout/car_ui_list_preference.xml b/car-ui-lib/res/layout/car_ui_list_preference.xml
index 0f9a367..88957b0 100644
--- a/car-ui-lib/res/layout/car_ui_list_preference.xml
+++ b/car-ui-lib/res/layout/car_ui_list_preference.xml
@@ -25,7 +25,8 @@
<com.android.car.ui.recyclerview.CarUiRecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ android:layout_height="match_parent"
+ app:enableDivider="true" />
<com.android.car.ui.toolbar.Toolbar
android:id="@+id/toolbar"
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 345cbaf..0b608a2 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
@@ -264,7 +264,7 @@
a.getInt(R.styleable.CarUiRecyclerView_layoutStyle, CarUiRecyclerViewLayout.LINEAR);
mNumOfColumns = a.getInt(R.styleable.CarUiRecyclerView_numOfColumns, /* defValue= */ 2);
boolean enableDivider =
- a.getBoolean(R.styleable.CarUiRecyclerView_enableDivider, /* defValue= */ true);
+ a.getBoolean(R.styleable.CarUiRecyclerView_enableDivider, /* defValue= */ false);
if (mCarUiRecyclerViewLayout == CarUiRecyclerViewLayout.LINEAR) {
diff --git a/car-ui-lib/src/com/android/car/ui/recyclerview/decorations/grid/GridDividerItemDecoration.java b/car-ui-lib/src/com/android/car/ui/recyclerview/decorations/grid/GridDividerItemDecoration.java
index 9ccbc5e..d462b92 100644
--- a/car-ui-lib/src/com/android/car/ui/recyclerview/decorations/grid/GridDividerItemDecoration.java
+++ b/car-ui-lib/src/com/android/car/ui/recyclerview/decorations/grid/GridDividerItemDecoration.java
@@ -89,8 +89,9 @@
int childCount = parent.getChildCount();
int rowCount = childCount / mNumColumns;
int lastRowChildCount = childCount % mNumColumns;
+ int lastColumn = Math.min(childCount, mNumColumns);
- for (int i = 1; i < mNumColumns; i++) {
+ for (int i = 1; i < lastColumn; i++) {
int lastRowChildIndex;
if (i < lastRowChildCount) {
lastRowChildIndex = i + (rowCount * mNumColumns);