22
33import android .content .Context ;
44import android .util .Log ;
5- import android .view .LayoutInflater ;
65import android .view .View ;
76import android .view .ViewGroup ;
87
3837import java .time .format .FormatStyle ;
3938import java .util .ArrayList ;
4039import java .util .List ;
41- import java .util .function .Supplier ;
4240
4341/*
4442 * Created by Christian Schabesberger on 01.08.16.
@@ -84,14 +82,13 @@ public class LocalItemListAdapter extends RecyclerView.Adapter<RecyclerView.View
8482 private static final int REMOTE_PLAYLIST_CARD_HOLDER_TYPE = 0x3002 ;
8583 private static final int REMOTE_BOOKMARK_PLAYLIST_HOLDER_TYPE = 0x3003 ;
8684
87- private final LayoutInflater layoutInflater ;
8885 private final LocalItemBuilder localItemBuilder ;
8986 private final ArrayList <LocalItem > localItems ;
9087 private final HistoryRecordManager recordManager ;
9188 private final DateTimeFormatter dateTimeFormatter ;
9289
9390 private boolean showFooter = false ;
94- private Supplier < View > headerSupplier = null ;
91+ private View header = null ;
9592 private View footer = null ;
9693 private ItemViewMode itemViewMode = ItemViewMode .LIST ;
9794 private boolean useItemHandle = false ;
@@ -100,8 +97,6 @@ public LocalItemListAdapter(final Context context) {
10097 recordManager = new HistoryRecordManager (context );
10198 localItemBuilder = new LocalItemBuilder (context );
10299 localItems = new ArrayList <>();
103- layoutInflater = LayoutInflater .from (context );
104-
105100 dateTimeFormatter = DateTimeFormatter .ofLocalizedDate (FormatStyle .SHORT )
106101 .withLocale (Localization .getPreferredLocale (context ));
107102 }
@@ -129,7 +124,7 @@ public void addItems(@Nullable final List<? extends LocalItem> data) {
129124 if (DEBUG ) {
130125 Log .d (TAG , "addItems() after > offsetStart = " + offsetStart + ", "
131126 + "localItems.size() = " + localItems .size () + ", "
132- + "header = " + hasHeader () + ", footer = " + footer + ", "
127+ + "header = " + header + ", footer = " + footer + ", "
133128 + "showFooter = " + showFooter );
134129 }
135130 notifyItemRangeInserted (offsetStart , data .size ());
@@ -149,7 +144,7 @@ public void removeItem(final LocalItem data) {
149144 final int index = localItems .indexOf (data );
150145 if (index != -1 ) {
151146 localItems .remove (index );
152- notifyItemRemoved (index + (hasHeader () ? 1 : 0 ));
147+ notifyItemRemoved (index + (header != null ? 1 : 0 ));
153148 } else {
154149 // this happens when
155150 // 1) removeItem is called on infoItemDuplicate as in showStreamItemDialog of
@@ -194,9 +189,9 @@ public void setUseItemHandle(final boolean useItemHandle) {
194189 this .useItemHandle = useItemHandle ;
195190 }
196191
197- public void setHeaderSupplier ( @ Nullable final Supplier < View > headerSupplier ) {
198- final boolean changed = headerSupplier != this .headerSupplier ;
199- this .headerSupplier = headerSupplier ;
192+ public void setHeader ( final View header ) {
193+ final boolean changed = header != this .header ;
194+ this .header = header ;
200195 if (changed ) {
201196 notifyDataSetChanged ();
202197 }
@@ -206,10 +201,6 @@ public void setFooter(final View view) {
206201 this .footer = view ;
207202 }
208203
209- protected boolean hasHeader () {
210- return this .headerSupplier != null ;
211- }
212-
213204 public void showFooter (final boolean show ) {
214205 if (DEBUG ) {
215206 Log .d (TAG , "showFooter() called with: show = [" + show + "]" );
@@ -227,11 +218,11 @@ public void showFooter(final boolean show) {
227218 }
228219
229220 private int adapterOffsetWithoutHeader (final int offset ) {
230- return offset - (hasHeader () ? 1 : 0 );
221+ return offset - (header != null ? 1 : 0 );
231222 }
232223
233224 private int sizeConsideringHeader () {
234- return localItems .size () + (hasHeader () ? 1 : 0 );
225+ return localItems .size () + (header != null ? 1 : 0 );
235226 }
236227
237228 public ArrayList <LocalItem > getItemsList () {
@@ -241,7 +232,7 @@ public ArrayList<LocalItem> getItemsList() {
241232 @ Override
242233 public int getItemCount () {
243234 int count = localItems .size ();
244- if (hasHeader () ) {
235+ if (header != null ) {
245236 count ++;
246237 }
247238 if (footer != null && showFooter ) {
@@ -251,7 +242,7 @@ public int getItemCount() {
251242 if (DEBUG ) {
252243 Log .d (TAG , "getItemCount() called, count = " + count + ", "
253244 + "localItems.size() = " + localItems .size () + ", "
254- + "header = " + hasHeader () + ", footer = " + footer + ", "
245+ + "header = " + header + ", footer = " + footer + ", "
255246 + "showFooter = " + showFooter );
256247 }
257248 return count ;
@@ -264,9 +255,9 @@ public int getItemViewType(int position) {
264255 Log .d (TAG , "getItemViewType() called with: position = [" + position + "]" );
265256 }
266257
267- if (hasHeader () && position == 0 ) {
258+ if (header != null && position == 0 ) {
268259 return HEADER_TYPE ;
269- } else if (hasHeader () ) {
260+ } else if (header != null ) {
270261 position --;
271262 }
272263 if (footer != null && position == localItems .size () && showFooter ) {
@@ -327,7 +318,7 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull final ViewGroup paren
327318 }
328319 switch (type ) {
329320 case HEADER_TYPE :
330- return new HeaderFooterHolder (headerSupplier . get () );
321+ return new HeaderFooterHolder (header );
331322 case FOOTER_TYPE :
332323 return new HeaderFooterHolder (footer );
333324 case LOCAL_PLAYLIST_HOLDER_TYPE :
@@ -375,14 +366,14 @@ public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int
375366
376367 if (holder instanceof LocalItemHolder ) {
377368 // If header isn't null, offset the items by -1
378- if (hasHeader () ) {
369+ if (header != null ) {
379370 position --;
380371 }
381372
382373 ((LocalItemHolder ) holder )
383374 .updateFromItem (localItems .get (position ), recordManager , dateTimeFormatter );
384- } else if (holder instanceof HeaderFooterHolder && position == 0 && hasHeader () ) {
385- ((HeaderFooterHolder ) holder ).view = headerSupplier . get () ;
375+ } else if (holder instanceof HeaderFooterHolder && position == 0 && header != null ) {
376+ ((HeaderFooterHolder ) holder ).view = header ;
386377 } else if (holder instanceof HeaderFooterHolder && position == sizeConsideringHeader ()
387378 && footer != null && showFooter ) {
388379 ((HeaderFooterHolder ) holder ).view = footer ;
@@ -396,10 +387,10 @@ public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, fina
396387 for (final Object payload : payloads ) {
397388 if (payload instanceof StreamStateEntity ) {
398389 ((LocalItemHolder ) holder ).updateState (localItems
399- .get (hasHeader () ? position - 1 : position ), recordManager );
390+ .get (header == null ? position : position - 1 ), recordManager );
400391 } else if (payload instanceof Boolean ) {
401392 ((LocalItemHolder ) holder ).updateState (localItems
402- .get (hasHeader () ? position - 1 : position ), recordManager );
393+ .get (header == null ? position : position - 1 ), recordManager );
403394 }
404395 }
405396 } else {
0 commit comments