@Test public void multipleMoves() { AdapterDataObserver observer = mock(AdapterDataObserver.class); final List<TestModel> testModels = new ArrayList<>(); testModels.add(new TestModel(1)); testModels.add(new TestModel(2)); testModels.add(new TestModel(3)); EpoxyController controller = new EpoxyController() { @Override protected void buildModels() { add(testModels); } }; EpoxyControllerAdapter adapter = controller.getAdapter(); adapter.registerAdapterDataObserver(observer); controller.requestModelBuild(); testModels.add(0, testModels.remove(1)); controller.moveModel(1, 0); verify(observer).onItemRangeMoved(1, 0, 1); testModels.add(2, testModels.remove(1)); controller.moveModel(1, 2); verify(observer).onItemRangeMoved(1, 2, 1); assertEquals(testModels, adapter.getCurrentModels()); controller.requestModelBuild(); assertEquals(testModels, adapter.getCurrentModels()); }
@Test public void moveModel() { AdapterDataObserver observer = mock(AdapterDataObserver.class); final List<TestModel> testModels = new ArrayList<>(); testModels.add(new TestModel(1)); testModels.add(new TestModel(2)); testModels.add(new TestModel(3)); EpoxyController controller = new EpoxyController() { @Override protected void buildModels() { add(testModels); } }; EpoxyControllerAdapter adapter = controller.getAdapter(); adapter.registerAdapterDataObserver(observer); controller.requestModelBuild(); verify(observer).onItemRangeInserted(0, 3); testModels.add(0, testModels.remove(1)); controller.moveModel(1, 0); verify(observer).onItemRangeMoved(1, 0, 1); assertEquals(testModels, adapter.getCurrentModels()); controller.requestModelBuild(); assertEquals(testModels, adapter.getCurrentModels()); verifyNoMoreInteractions(observer); }
@Test public void moveModelOtherWay() { AdapterDataObserver observer = mock(AdapterDataObserver.class); final List<TestModel> testModels = new ArrayList<>(); testModels.add(new TestModel(1)); testModels.add(new TestModel(2)); testModels.add(new TestModel(3)); EpoxyController controller = new EpoxyController() { @Override protected void buildModels() { add(testModels); } }; EpoxyControllerAdapter adapter = controller.getAdapter(); adapter.registerAdapterDataObserver(observer); controller.requestModelBuild(); verify(observer).onItemRangeInserted(0, 3); testModels.add(2, testModels.remove(1)); controller.moveModel(1, 2); verify(observer).onItemRangeMoved(1, 2, 1); assertEquals(testModels, adapter.getCurrentModels()); controller.requestModelBuild(); assertEquals(testModels, adapter.getCurrentModels()); verifyNoMoreInteractions(observer); }
@Override public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { super.onItemRangeMoved(fromPosition, toPosition, itemCount); // this should probably be smarter and just move relevant views recreateViews(); reindex(); } };
@Override public void onItemRangeMoved(final int fromPosition, final int toPosition, final int itemCount) { super.onItemRangeMoved(fromPosition, toPosition, itemCount); updateNavigationPreferences(); }
@Override public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { updatePrevious(fromPosition - 1); updateNext(fromPosition + itemCount); observer.onItemRangeMoved(fromPosition, toPosition, itemCount); updatePrevious(toPosition - 1); updateNext(toPosition + itemCount); } }