diff --git a/flexible-adapter-app/src/main/java/eu/davidea/samples/flexibleadapter/items/ExpandableHeaderItem.java b/flexible-adapter-app/src/main/java/eu/davidea/samples/flexibleadapter/items/ExpandableHeaderItem.java index c10cec91..5d8b2377 100644 --- a/flexible-adapter-app/src/main/java/eu/davidea/samples/flexibleadapter/items/ExpandableHeaderItem.java +++ b/flexible-adapter-app/src/main/java/eu/davidea/samples/flexibleadapter/items/ExpandableHeaderItem.java @@ -183,6 +183,7 @@ protected boolean isViewCollapsibleOnClick() { * @return always true, if not overridden * @since 5.0.0-b1 */ + @Override protected boolean isViewCollapsibleOnLongClick() { return true;//default=true } diff --git a/flexible-adapter-app/version.properties b/flexible-adapter-app/version.properties index d849369d..b5a8333a 100644 --- a/flexible-adapter-app/version.properties +++ b/flexible-adapter-app/version.properties @@ -1,7 +1,7 @@ -#Sun Apr 29 23:38:35 CEST 2018 +#Tue May 08 00:20:53 CEST 2018 MAJOR=5 MINOR=0 PATCH=0 PRE_RELEASE= -BUILD=5541 +BUILD=5571 CODE=23 diff --git a/flexible-adapter/src/main/java/eu/davidea/flexibleadapter/FlexibleAdapter.java b/flexible-adapter/src/main/java/eu/davidea/flexibleadapter/FlexibleAdapter.java index 3ae2f196..db4c100d 100644 --- a/flexible-adapter/src/main/java/eu/davidea/flexibleadapter/FlexibleAdapter.java +++ b/flexible-adapter/src/main/java/eu/davidea/flexibleadapter/FlexibleAdapter.java @@ -388,7 +388,7 @@ public FlexibleAdapter removeListener(Object listener) { */ @CallSuper @Override - public void onAttachedToRecyclerView(RecyclerView recyclerView) { + public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); log.v("Attached Adapter to RecyclerView"); if (headersShown && areHeadersSticky()) { @@ -404,7 +404,7 @@ public void onAttachedToRecyclerView(RecyclerView recyclerView) { */ @CallSuper @Override - public void onDetachedFromRecyclerView(RecyclerView recyclerView) { + public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) { if (areHeadersSticky()) { mStickyHeaderHelper.detachFromRecyclerView(); mStickyHeaderHelper = null; @@ -613,8 +613,6 @@ public void updateDataSet(@Nullable List items) { public void updateDataSet(@Nullable List items, boolean animate) { mOriginalList = null; // Reset original list from filter if (items == null) items = new ArrayList<>(); - // Always clear cache of bound view holders - discardBoundViewHolders(); if (animate) { mHandler.removeMessages(UPDATE); mHandler.sendMessage(Message.obtain(mHandler, UPDATE, items)); @@ -1767,7 +1765,7 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int positi * @since 5.0.0-b1 */ @Override - public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position, List payloads) { + public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int position, @NonNull List payloads) { if (!autoMap) { // If everything has been set properly, this should never happen ;-) throw new IllegalStateException("AutoMap is not active, this method cannot be called. You should implement the AutoMap properly."); @@ -1814,7 +1812,7 @@ public void onViewDetachedFromWindow(@NonNull RecyclerView.ViewHolder holder) { @CallSuper @Override - public void onViewRecycled(RecyclerView.ViewHolder holder) { + public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) { super.onViewRecycled(holder); if (areHeadersSticky()) { // #297 - Empty (Invisible) Header Item when Using Sticky Headers @@ -5488,6 +5486,10 @@ protected void onPostExecute(Void result) { } private void prepareItemsForUpdate(List newItems) { + // Clear cache of bound view holders + if (notifyChangeOfUnfilteredItems) { + discardBoundViewHolders(); + } // Display Scrollable Headers and Footers restoreScrollableHeadersAndFooters(newItems); diff --git a/flexible-adapter/src/main/java/eu/davidea/flexibleadapter/SelectableAdapter.java b/flexible-adapter/src/main/java/eu/davidea/flexibleadapter/SelectableAdapter.java index a968e75f..2673dc0e 100644 --- a/flexible-adapter/src/main/java/eu/davidea/flexibleadapter/SelectableAdapter.java +++ b/flexible-adapter/src/main/java/eu/davidea/flexibleadapter/SelectableAdapter.java @@ -18,6 +18,7 @@ import android.annotation.SuppressLint; import android.os.Bundle; import android.support.annotation.IntDef; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.view.ViewCompat; import android.support.v7.widget.RecyclerView; @@ -156,7 +157,7 @@ public static void useTag(String tag) { * @since 5.0.0-b6 */ @Override - public void onAttachedToRecyclerView(RecyclerView recyclerView) { + public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { super.onAttachedToRecyclerView(recyclerView); if (mFastScrollerDelegate != null) { mFastScrollerDelegate.onAttachedToRecyclerView(recyclerView); @@ -171,7 +172,7 @@ public void onAttachedToRecyclerView(RecyclerView recyclerView) { * @since 5.0.0-b6 */ @Override - public void onDetachedFromRecyclerView(RecyclerView recyclerView) { + public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) { super.onDetachedFromRecyclerView(recyclerView); if (mFastScrollerDelegate != null) { mFastScrollerDelegate.onDetachedFromRecyclerView(recyclerView); @@ -473,7 +474,7 @@ private void notifySelectionChanged(int positionStart, int itemCount) { } @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List payloads) { + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position, @NonNull List payloads) { // Bind the correct view elevation if (holder instanceof FlexibleViewHolder) { FlexibleViewHolder flexHolder = (FlexibleViewHolder) holder; @@ -496,7 +497,7 @@ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List } @Override - public void onViewRecycled(RecyclerView.ViewHolder holder) { + public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) { if (holder instanceof FlexibleViewHolder) { boolean recycled = mBoundViewHolders.remove(holder); log.v("onViewRecycled viewSize=%s %s %s recycled=%s", mBoundViewHolders.size(), getClassName(holder), holder, recycled); @@ -562,7 +563,6 @@ public Set getSelectedPositionsAsSet() { * @since 1.0.0 */ public void onSaveInstanceState(Bundle outState) { - discardBoundViewHolders(); outState.putIntegerArrayList(TAG, new ArrayList<>(mSelectedPositions)); if (getSelectedItemCount() > 0) log.d("Saving selection %s", mSelectedPositions); }