From b0ae5cf572bdf11d184031a72e9a43f98a53b141 Mon Sep 17 00:00:00 2001 From: DominikHys Date: Thu, 20 Jul 2017 14:16:16 +0200 Subject: [PATCH] Add addData option --- .../DynamicRecyclerViewAdapter.java | 18 ++++++++++++++++-- .../DynamicRecyclerViewAdapterTest.java | 10 ++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/recyclerviewwithdynamicsubtitles/src/main/java/com/infullmobile/android/recyclerviewwithdynamicsubtitles/DynamicRecyclerViewAdapter.java b/recyclerviewwithdynamicsubtitles/src/main/java/com/infullmobile/android/recyclerviewwithdynamicsubtitles/DynamicRecyclerViewAdapter.java index 361bb3d..9fddfea 100644 --- a/recyclerviewwithdynamicsubtitles/src/main/java/com/infullmobile/android/recyclerviewwithdynamicsubtitles/DynamicRecyclerViewAdapter.java +++ b/recyclerviewwithdynamicsubtitles/src/main/java/com/infullmobile/android/recyclerviewwithdynamicsubtitles/DynamicRecyclerViewAdapter.java @@ -72,11 +72,25 @@ public final void setData(@Nullable Collection items, @NonNull Comparator
comparator) { final SectionedItems sectionedItems = new SectionedItems<>(sectionEvaluator, items, comparator); mapOfSections = sectionedItems.getSections(); - insertNewItems(sectionedItems); + insertNewItems(sectionedItems.getItems()); } - private void insertNewItems(SectionedItems sectionedItems) { + public final void addData(@Nullable Collection items, + @NonNull SectionEvaluator sectionEvaluator) { + addData(items, sectionEvaluator, Comparators.ASCENDING_COMPARATOR); + } + + public final void addData(@Nullable Collection items, + @NonNull SectionEvaluator sectionEvaluator, + @NonNull Comparator
comparator) { + final SectionedItems sectionedItems = new SectionedItems<>(sectionEvaluator, items, comparator); + mapOfSections = sectionedItems.getSections(); final List newListItems = sectionedItems.getItems(); + newListItems.addAll(sectionedItemList); + insertNewItems(newListItems); + } + + private void insertNewItems(List newListItems) { if (sectionedItemList.isEmpty()) { sectionedItemList = newListItems; notifyDataSetChanged(); diff --git a/recyclerviewwithdynamicsubtitles/src/test/java/com/infullmobile/android/recyclerviewwithdynamicsubtitles/DynamicRecyclerViewAdapterTest.java b/recyclerviewwithdynamicsubtitles/src/test/java/com/infullmobile/android/recyclerviewwithdynamicsubtitles/DynamicRecyclerViewAdapterTest.java index 3fe59eb..0ae1a08 100644 --- a/recyclerviewwithdynamicsubtitles/src/test/java/com/infullmobile/android/recyclerviewwithdynamicsubtitles/DynamicRecyclerViewAdapterTest.java +++ b/recyclerviewwithdynamicsubtitles/src/test/java/com/infullmobile/android/recyclerviewwithdynamicsubtitles/DynamicRecyclerViewAdapterTest.java @@ -33,7 +33,10 @@ public class DynamicRecyclerViewAdapterTest { private static final String FIRST_ITEM_SECTION_TITLE = new TestSectionEvaluator().evaluate(FIRST_ITEM); private final static String SECOND_ITEM = "secondItem"; private static final String SECOND_ITEM_SECTION_TITLE = new TestSectionEvaluator().evaluate(SECOND_ITEM); + private final static String THIRD_ITEM = "thirdItem"; + private final static String FOURTH_ITEM = "fourthItem"; private List testItems = Arrays.asList(FIRST_ITEM, SECOND_ITEM); + private List moreTestItems = Arrays.asList(THIRD_ITEM, FOURTH_ITEM); @Captor ArgumentCaptor titleCaptor; @Captor ArgumentCaptor> dataItemsCaptor; @@ -52,6 +55,13 @@ public void shouldGetCorrectItemCount() { assertThat(dynamicRecyclerViewAdapter.getItemCount()).isEqualTo(4); } + @Test + public void shouldGetCorrectItemCountAfterAdding() { + // when + dynamicRecyclerViewAdapter.addData(moreTestItems, new TestSectionEvaluator()); + assertThat(dynamicRecyclerViewAdapter.getItemCount()).isEqualTo(7); + } + @Test public void shouldProvideCorrectViewTypeForHeadersAndNonHeader() { assertThat(dynamicRecyclerViewAdapter.getItemViewType(0)).isEqualTo(DynamicRecyclerViewAdapter.TITLE_TYPE);