From 6172c6b7f1d1468f9f0cd2f227def981f9ffc324 Mon Sep 17 00:00:00 2001 From: NekoInverter <7741672-NekoInverter@users.noreply.gitlab.com> Date: Tue, 29 Dec 2020 14:24:39 +0800 Subject: [PATCH] Fix search layout crash --- .../com/hippo/ehviewer/widget/SearchLayout.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/widget/SearchLayout.java b/app/src/main/java/com/hippo/ehviewer/widget/SearchLayout.java index 845b5b40d..0de07b7bd 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/SearchLayout.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/SearchLayout.java @@ -35,6 +35,7 @@ import android.widget.TextView; import androidx.annotation.IntDef; import androidx.annotation.NonNull; import androidx.appcompat.widget.SwitchCompat; +import androidx.recyclerview.widget.DefaultItemAnimator; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -109,6 +110,7 @@ public class SearchLayout extends EasyRecyclerView implements CompoundButton.OnC setAdapter(mAdapter); setHasFixedSize(true); setClipToPadding(false); + ((DefaultItemAnimator) getItemAnimator()).setSupportsChangeAnimations(false); int interval = resources.getDimensionPixelOffset(R.dimen.search_layout_interval); int paddingH = resources.getDimensionPixelOffset(R.dimen.search_layout_margin_h); int paddingV = resources.getDimensionPixelOffset(R.dimen.search_layout_margin_v); @@ -125,7 +127,7 @@ public class SearchLayout extends EasyRecyclerView implements CompoundButton.OnC mNormalSearchModeHelp = normalView.findViewById(R.id.normal_search_mode_help); mEnableAdvanceSwitch = normalView.findViewById(R.id.search_enable_advance); mNormalSearchModeHelp.setOnClickListener(this); - mEnableAdvanceSwitch.setOnCheckedChangeListener(SearchLayout.this); + mEnableAdvanceSwitch.setOnCheckedChangeListener(this); mEnableAdvanceSwitch.setSwitchPadding(resources.getDimensionPixelSize(R.dimen.switch_padding)); // Create advance view @@ -138,6 +140,9 @@ public class SearchLayout extends EasyRecyclerView implements CompoundButton.OnC // Create action view mActionView = mInflater.inflate(R.layout.search_action, null); + mActionView.setLayoutParams(new RecyclerView.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT)); mAction = mActionView.findViewById(R.id.action); mAction.addOnTabSelectedListener(this); } @@ -274,18 +279,13 @@ public class SearchLayout extends EasyRecyclerView implements CompoundButton.OnC post(() -> { int oldItemCount = mAdapter.getItemCount(); - mSearchMode++; - if (mSearchMode > SEARCH_MODE_IMAGE) { - mSearchMode = SEARCH_MODE_NORMAL; - } + mSearchMode = tab.getPosition(); int newItemCount = mAdapter.getItemCount(); mAdapter.notifyItemRangeRemoved(0, oldItemCount - 1); mAdapter.notifyItemRangeInserted(0, newItemCount - 1); - mSearchMode = tab.getPosition(); - if (mHelper != null) { mHelper.onChangeSearchMode(); } @@ -346,9 +346,6 @@ public class SearchLayout extends EasyRecyclerView implements CompoundButton.OnC if (viewType == ITEM_TYPE_ACTION) { ViewUtils.removeFromParent(mActionView); - mActionView.setLayoutParams(new RecyclerView.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT)); view = mActionView; } else { view = mInflater.inflate(R.layout.search_category, parent, false);