BrowseFragment: fix ListRowDataAdapter ArrayIndexOutofBound
am: 5d19666305
Change-Id: I79fe0984d24651a0a3417b089d694e8a7b03adfe
diff --git a/v17/leanback/src/android/support/v17/leanback/app/ListRowDataAdapter.java b/v17/leanback/src/android/support/v17/leanback/app/ListRowDataAdapter.java
index 1f2788f..8e3b4f4 100644
--- a/v17/leanback/src/android/support/v17/leanback/app/ListRowDataAdapter.java
+++ b/v17/leanback/src/android/support/v17/leanback/app/ListRowDataAdapter.java
@@ -41,6 +41,7 @@
}
void initialize() {
+ mLastVisibleRowIndex = -1;
int i = mAdapter.size() - 1;
while (i >= 0) {
Row item = (Row) mAdapter.get(i);
diff --git a/v17/leanback/tests/java/android/support/v17/leanback/app/ListRowDataAdapterTest.java b/v17/leanback/tests/java/android/support/v17/leanback/app/ListRowDataAdapterTest.java
index b7cb4e8..b515a18 100644
--- a/v17/leanback/tests/java/android/support/v17/leanback/app/ListRowDataAdapterTest.java
+++ b/v17/leanback/tests/java/android/support/v17/leanback/app/ListRowDataAdapterTest.java
@@ -197,6 +197,26 @@
}
@Test
+ public void adapterSize_rowsRemoveAll() {
+ ArrayObjectAdapter adapter = new ArrayObjectAdapter(presenterSelector);
+ adapter.add(new SectionRow("section 1"));
+ for (int i = 0; i < 4; i++) {
+ HeaderItem headerItem = new HeaderItem(i, "header "+i);
+ adapter.add(new ListRow(headerItem, createListRowAdapter()));
+ }
+
+ ListRowDataAdapter listRowDataAdapter = new ListRowDataAdapter(adapter);
+ assertEquals(5, listRowDataAdapter.size());
+
+ adapter.clear();
+ assertEquals(0, listRowDataAdapter.size());
+
+ HeaderItem headerItem = new HeaderItem(10, "header "+10);
+ adapter.add(new ListRow(headerItem, createListRowAdapter()));
+ assertEquals(1, listRowDataAdapter.size());
+ }
+
+ @Test
public void adapterSize_rowsRemoved() {
int itemCount = 4;
ArrayObjectAdapter adapter = new ArrayObjectAdapter(presenterSelector);