From fcf85a36c0b68b8eccf034c7c955fadfa4d0e0bb Mon Sep 17 00:00:00 2001 From: shaoweishen Date: Tue, 22 Feb 2022 14:26:17 +0000 Subject: [PATCH] [Output Switcher] Fix recyclerview flickering Bug: 219067810 Test: Verified on device Change-Id: I7532a54a6b0fa945a4c87a9b8abb39f51d3a9aba (cherry picked from commit 1d25d0b587a6733ef2155ff9e34562eb79518234) Merged-In: I7532a54a6b0fa945a4c87a9b8abb39f51d3a9aba --- .../systemui/media/dialog/MediaOutputAdapter.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java index 3cd390533132d..89cf68a1e830a 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java @@ -54,6 +54,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { MediaOutputDialog mediaOutputDialog) { super(controller); mMediaOutputDialog = mediaOutputDialog; + setHasStableIds(true); } @Override @@ -78,6 +79,20 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { } } + @Override + public long getItemId(int position) { + final int size = mController.getMediaDevices().size(); + if (position == size && mController.isZeroMode()) { + return -1; + } else if (position < size) { + return ((List) (mController.getMediaDevices())) + .get(position).getId().hashCode(); + } else if (DEBUG) { + Log.d(TAG, "Incorrect position for item id: " + position); + } + return position; + } + @Override public int getItemCount() { if (mController.isZeroMode()) {