1a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar/* 2ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikas * Copyright 2018 The Android Open Source Project 3a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * 4a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 5a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * you may not use this file except in compliance with the License. 6a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * You may obtain a copy of the License at 7a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * 8a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 9a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * 10a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * Unless required by applicable law or agreed to in writing, software 11a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 12a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * See the License for the specific language governing permissions and 14a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * limitations under the License. 15a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar */ 16a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.recyclerview.widget; 18a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 19a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar/** 20a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * A {@link SortedList.Callback} implementation that can bind a {@link SortedList} to a 21a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * {@link RecyclerView.Adapter}. 22a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar */ 23a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyarpublic abstract class SortedListAdapterCallback<T2> extends SortedList.Callback<T2> { 24a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 25a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar final RecyclerView.Adapter mAdapter; 26a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 27a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar /** 28a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * Creates a {@link SortedList.Callback} that will forward data change events to the provided 29a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * Adapter. 30a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * 31a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * @param adapter The Adapter instance which should receive events from the SortedList. 32a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar */ 33a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar public SortedListAdapterCallback(RecyclerView.Adapter adapter) { 34a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar mAdapter = adapter; 35a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar } 36a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 37a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar @Override 38a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar public void onInserted(int position, int count) { 39a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar mAdapter.notifyItemRangeInserted(position, count); 40a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar } 41a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 42a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar @Override 43a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar public void onRemoved(int position, int count) { 44a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar mAdapter.notifyItemRangeRemoved(position, count); 45a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar } 46a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 47a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar @Override 48a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar public void onMoved(int fromPosition, int toPosition) { 49a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar mAdapter.notifyItemMoved(fromPosition, toPosition); 50a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar } 51a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 52a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar @Override 53a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar public void onChanged(int position, int count) { 54a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar mAdapter.notifyItemRangeChanged(position, count); 55a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar } 568f6b5823bcfbd017c1a3792f1ef9a7ddd797b404Nick Butcher 578f6b5823bcfbd017c1a3792f1ef9a7ddd797b404Nick Butcher @Override 588f6b5823bcfbd017c1a3792f1ef9a7ddd797b404Nick Butcher public void onChanged(int position, int count, Object payload) { 598f6b5823bcfbd017c1a3792f1ef9a7ddd797b404Nick Butcher mAdapter.notifyItemRangeChanged(position, count, payload); 608f6b5823bcfbd017c1a3792f1ef9a7ddd797b404Nick Butcher } 61a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar} 62