Create a new list when building suggestion data.
- using sublist of the original suggestions list may results in ConcurrentModificationException if the originaly list is being modified. Create a new list instead to avoid running into the issue. Change-Id: Ia83a0432be542eeb428d177f6118d26fc2262e93 Fixes: 74194336 Test: run monkey
This commit is contained in:
@@ -155,8 +155,8 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
// remain as the dashboard item. Need to refresh the dashboard list.
|
||||
setSuggestions(null);
|
||||
} else {
|
||||
mSuggestionAdapter.removeSuggestion(suggestion);
|
||||
notifyItemChanged(0, null);
|
||||
list.remove(suggestion);
|
||||
setSuggestions(list);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -246,7 +246,11 @@ public class DashboardData {
|
||||
if (suggestions.size() <= MAX_SUGGESTION_COUNT) {
|
||||
return suggestions;
|
||||
}
|
||||
return suggestions.subList(0, MAX_SUGGESTION_COUNT);
|
||||
final List<Suggestion> suggestionsToShow = new ArrayList<>(MAX_SUGGESTION_COUNT);
|
||||
for (int i = 0; i < MAX_SUGGESTION_COUNT; i++) {
|
||||
suggestionsToShow.add(suggestions.get(i));
|
||||
}
|
||||
return suggestionsToShow;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -124,10 +124,9 @@ public class DashboardAdapterTest {
|
||||
final Suggestion suggestionToRemove = suggestions.get(1);
|
||||
adapter.onSuggestionClosed(suggestionToRemove);
|
||||
|
||||
assertThat(adapter.mDashboardData).isEqualTo(dashboardData);
|
||||
assertThat(suggestions.size()).isEqualTo(2);
|
||||
assertThat(suggestions.contains(suggestionToRemove)).isFalse();
|
||||
verify(adapter, never()).notifyDashboardDataChanged(any());
|
||||
verify(adapter).notifyDashboardDataChanged(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user