SortedListAdapterCallback.java revision a3d5bb01bc01733999d84c452a27012c57ab369c
1a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar/* 2a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * Copyright (C) 2014 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 17a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyarpackage android.support.v7.widget.util; 18a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 19a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyarimport android.support.v7.util.SortedList; 20a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyarimport android.support.v7.widget.RecyclerView; 21a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 22a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar/** 23a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * A {@link SortedList.Callback} implementation that can bind a {@link SortedList} to a 24a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * {@link RecyclerView.Adapter}. 25a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar */ 26a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyarpublic abstract class SortedListAdapterCallback<T2> extends SortedList.Callback<T2> { 27a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 28a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar final RecyclerView.Adapter mAdapter; 29a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 30a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar /** 31a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * Creates a {@link SortedList.Callback} that will forward data change events to the provided 32a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * Adapter. 33a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * 34a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar * @param adapter The Adapter instance which should receive events from the SortedList. 35a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar */ 36a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar public SortedListAdapterCallback(RecyclerView.Adapter adapter) { 37a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar mAdapter = adapter; 38a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar } 39a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 40a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar @Override 41a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar public void onInserted(int position, int count) { 42a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar mAdapter.notifyItemRangeInserted(position, count); 43a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar } 44a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 45a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar @Override 46a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar public void onRemoved(int position, int count) { 47a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar mAdapter.notifyItemRangeRemoved(position, count); 48a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar } 49a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 50a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar @Override 51a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar public void onMoved(int fromPosition, int toPosition) { 52a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar mAdapter.notifyItemMoved(fromPosition, toPosition); 53a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar } 54a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar 55a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar @Override 56a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar public void onChanged(int position, int count) { 57a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar mAdapter.notifyItemRangeChanged(position, count); 58a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar } 59a3d5bb01bc01733999d84c452a27012c57ab369cYigit Boyar} 60