diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java index 1c34ece115..f43f712a52 100644 --- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java +++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java @@ -577,6 +577,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet apps.getIconCache(), /* iconClickListener= */ WidgetsFullSheet.this, /* iconLongClickListener= */ WidgetsFullSheet.this); + mWidgetsListAdapter.setHasStableIds(true); switch (mAdapterType) { case PRIMARY: mWidgetsListAdapter.setFilter(mPrimaryWidgetsFilter); @@ -592,6 +593,8 @@ public class WidgetsFullSheet extends BaseWidgetSheet void setup(WidgetsRecyclerView recyclerView) { mWidgetsRecyclerView = recyclerView; mWidgetsRecyclerView.setAdapter(mWidgetsListAdapter); + // Disables animation because it disrupts the item focus upon adapter item change. + mWidgetsRecyclerView.setItemAnimator(null); mWidgetsRecyclerView.setHeaderViewDimensionsProvider(WidgetsFullSheet.this); mWidgetsRecyclerView.setEdgeEffectFactory( ((TopRoundedCornerView) mContent).createEdgeEffectFactory()); diff --git a/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java b/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java index cab1e02d9a..d841c64a3c 100644 --- a/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java +++ b/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java @@ -43,6 +43,7 @@ import com.android.launcher3.widget.model.WidgetsListHeaderEntry; import com.android.launcher3.widget.model.WidgetsListSearchHeaderEntry; import java.util.ArrayList; +import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.function.Predicate; @@ -216,7 +217,9 @@ public class WidgetsListAdapter extends Adapter implements OnHeaderC @Override public long getItemId(int pos) { - return pos; + return Arrays.hashCode(new Object[]{ + mVisibleEntries.get(pos).mPkgItem.hashCode(), + getItemViewType(pos)}); } @Override