1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.car.ui.plugin.oemapis.recyclerview;
17 
18 import android.view.ViewGroup;
19 
20 /**
21  * See {@link androidx.recyclerview.widget.RecyclerView.Adapter}
22  *
23  * @param <V> A class that extends ViewHolder that will be used by the adapter.
24  */
25 public interface AdapterOEMV1<V extends ViewHolderOEMV1> {
26 
27     int ALLOW = 0;
28     int PREVENT_WHEN_EMPTY = 1;
29     int PREVENT = 2;
30 
31     /**
32      * A value to pass to {@link #setMaxItems(int)} that indicates there should be no limit.
33      */
34     int UNLIMITED = -1;
35 
36     /**
37      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#getItemCount()}
38      */
getItemCount()39     int getItemCount();
40 
41     /**
42      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#getItemId(int)}
43      */
getItemId(int position)44     long getItemId(int position);
45 
46     /**
47      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#getItemViewType(int)}
48      */
getItemViewType(int position)49     int getItemViewType(int position);
50 
51     /**
52      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#getStateRestorationPolicy()}
53      */
getStateRestorationPolicyInt()54     int getStateRestorationPolicyInt();
55 
56     /**
57      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#onAttachedToRecyclerView}
58      */
onAttachedToRecyclerView(RecyclerViewOEMV1 recyclerView)59     void onAttachedToRecyclerView(RecyclerViewOEMV1 recyclerView);
60 
61     /**
62      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#bindViewHolder}
63      */
bindViewHolder(V holder, int position)64     void bindViewHolder(V holder, int position);
65 
66     /**
67      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#createViewHolder}
68      */
createViewHolder(ViewGroup parent, int viewType)69     V createViewHolder(ViewGroup parent, int viewType);
70 
71     /**
72      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#onDetachedFromRecyclerView}
73      */
onDetachedFromRecyclerView(RecyclerViewOEMV1 recyclerView)74     void onDetachedFromRecyclerView(RecyclerViewOEMV1 recyclerView);
75 
76     /**
77      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#onFailedToRecycleView}
78      */
onFailedToRecycleView(V holder)79     boolean onFailedToRecycleView(V holder);
80 
81     /**
82      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#onViewAttachedToWindow}
83      */
onViewAttachedToWindow(V holder)84     void onViewAttachedToWindow(V holder);
85 
86     /**
87      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#onViewDetachedFromWindow}
88      */
onViewDetachedFromWindow(V holder)89     void onViewDetachedFromWindow(V holder);
90 
91     /**
92      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#onViewRecycled}
93      */
onViewRecycled(V holder)94     void onViewRecycled(V holder);
95 
96     /**
97      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#registerAdapterDataObserver}
98      */
registerAdapterDataObserver(AdapterDataObserverOEMV1 observer)99     void registerAdapterDataObserver(AdapterDataObserverOEMV1 observer);
100 
101     /**
102      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#unregisterAdapterDataObserver}
103      */
unregisterAdapterDataObserver(AdapterDataObserverOEMV1 observer)104     void unregisterAdapterDataObserver(AdapterDataObserverOEMV1 observer);
105 
106     /**
107      * See {@link androidx.recyclerview.widget.RecyclerView.Adapter#hasStableIds}
108      */
hasStableIds()109     boolean hasStableIds();
110 
111     /**
112      * Sets the maximum number of items available in the adapter. A value less than '0' means
113      * the list should not be capped.
114      */
setMaxItems(int maxItems)115     void setMaxItems(int maxItems);
116 }
117