diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 27411391117..28b668fab33 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -53,6 +53,8 @@ import android.widget.Toast; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceScreen; +import androidx.recyclerview.widget.RecyclerView; import com.android.settings.LinkifyUtils; import com.android.settings.R; @@ -443,6 +445,13 @@ public class WifiSettings extends RestrictedSettingsFragment } } + @Override + protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) { + final RecyclerView.Adapter adapter = super.onCreateAdapter(preferenceScreen); + adapter.setHasStableIds(true); + return adapter; + } + @Override public int getMetricsCategory() { return SettingsEnums.WIFI; diff --git a/src/com/android/settings/wifi/WifiSettings2.java b/src/com/android/settings/wifi/WifiSettings2.java index 5389834f13d..49e882840f2 100644 --- a/src/com/android/settings/wifi/WifiSettings2.java +++ b/src/com/android/settings/wifi/WifiSettings2.java @@ -48,6 +48,8 @@ import android.widget.Toast; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceScreen; +import androidx.recyclerview.widget.RecyclerView; import com.android.settings.LinkifyUtils; import com.android.settings.R; @@ -367,6 +369,13 @@ public class WifiSettings2 extends RestrictedSettingsFragment } } + @Override + protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) { + final RecyclerView.Adapter adapter = super.onCreateAdapter(preferenceScreen); + adapter.setHasStableIds(true); + return adapter; + } + @Override public int getMetricsCategory() { return SettingsEnums.WIFI; diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java b/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java index 9a3d14ea008..2dd6e2a94d3 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java @@ -43,6 +43,8 @@ import android.provider.Settings; import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; +import androidx.recyclerview.widget.RecyclerView; import com.android.settings.R; import com.android.settings.datausage.DataUsagePreference; @@ -263,6 +265,15 @@ public class WifiSettings2Test { verify(mDataUsagePreference).setTemplate(any(), eq(0) /*subId*/, eq(null) /*service*/); } + @Test + public void onCreateAdapter_hasStableIdsTrue() { + final PreferenceScreen preferenceScreen = mock(PreferenceScreen.class); + + RecyclerView.Adapter adapter = mWifiSettings2.onCreateAdapter(preferenceScreen); + + assertThat(adapter.hasStableIds()).isTrue(); + } + // TODO(b/70983952): Add test for context menu // @Test // public void onCreateContextMenu_shouldHaveForgetMenuForConnectedAccessPreference() { diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java index 18d3f5b2349..ed5edd0a209 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java @@ -45,6 +45,8 @@ import android.view.View; import androidx.fragment.app.FragmentActivity; import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; +import androidx.recyclerview.widget.RecyclerView; import com.android.settings.R; import com.android.settings.datausage.DataUsagePreference; @@ -291,4 +293,13 @@ public class WifiSettingsTest { verify(menu).add(anyInt(), eq(WifiSettings.MENU_ID_FORGET), anyInt(), anyInt()); } + + @Test + public void onCreateAdapter_hasStableIdsTrue() { + final PreferenceScreen preferenceScreen = mock(PreferenceScreen.class); + + RecyclerView.Adapter adapter = mWifiSettings.onCreateAdapter(preferenceScreen); + + assertThat(adapter.hasStableIds()).isTrue(); + } }