OSDN Git Service

Fixing NPE in recycler view scroll bar.
authorWinson <winsonc@google.com>
Mon, 31 Aug 2015 22:02:26 +0000 (15:02 -0700)
committerWinson <winsonc@google.com>
Mon, 31 Aug 2015 22:02:26 +0000 (15:02 -0700)
- The regression was introduced in scroll bar changes ag/751628, but
  unlike AllApps, the WidgetsRecyclerView can have an unbound model.

Bug: 23689784
Change-Id: Ibd3d5bcbafab0ada9a372fa00acaa45809ce720d

src/com/android/launcher3/widget/WidgetsRecyclerView.java

index 3dcb332..884bdc4 100644 (file)
@@ -88,6 +88,12 @@ public class WidgetsRecyclerView extends BaseRecyclerView {
      */
     @Override
     public String scrollToPositionAtProgress(float touchFraction) {
+        // Skip early if widgets are not bound.
+        if (mWidgets == null) {
+            return "";
+        }
+
+        // Skip early if there are no widgets.
         int rowCount = mWidgets.getPackageSize();
         if (rowCount == 0) {
             return "";
@@ -112,9 +118,13 @@ public class WidgetsRecyclerView extends BaseRecyclerView {
      */
     @Override
     public void onUpdateScrollbar(int dy) {
-        int rowCount = mWidgets.getPackageSize();
+        // Skip early if widgets are not bound.
+        if (mWidgets == null) {
+            return;
+        }
 
-        // Skip early if, there are no items.
+        // Skip early if there are no widgets.
+        int rowCount = mWidgets.getPackageSize();
         if (rowCount == 0) {
             mScrollbar.setThumbOffset(-1, -1);
             return;
@@ -138,9 +148,13 @@ public class WidgetsRecyclerView extends BaseRecyclerView {
         stateOut.rowTopOffset = -1;
         stateOut.rowHeight = -1;
 
-        int rowCount = mWidgets.getPackageSize();
+        // Skip early if widgets are not bound.
+        if (mWidgets == null) {
+            return;
+        }
 
         // Return early if there are no items
+        int rowCount = mWidgets.getPackageSize();
         if (rowCount == 0) {
             return;
         }