diff options
author | 2023-01-18 17:36:13 +0800 | |
---|---|---|
committer | 2023-01-18 17:36:13 +0800 | |
commit | e41f7cc8ad9a4fc0996f9fbffa66b5a6b23223cb (patch) | |
tree | bb598062c3bb2153623e98236c10e733c4f4602f | |
parent | 020ca8995f9b2eef00adbd345c5b26ded926a564 (diff) |
Add identityHashCode to App List item key
To make sure the item is also refreshed when record data updated.
Bug: 235727273
Test: Manually with Settings
Change-Id: Ib8d4c31054a5fd2d35a99be3d8f7ab20b48096b8
-rw-r--r-- | packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppList.kt | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppList.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppList.kt index 7199e3a319fe..57a60e505553 100644 --- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppList.kt +++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppList.kt @@ -49,6 +49,7 @@ import com.android.settingslib.spaprivileged.model.app.AppListModel import com.android.settingslib.spaprivileged.model.app.AppListViewModel import com.android.settingslib.spaprivileged.model.app.AppRecord import com.android.settingslib.spaprivileged.model.app.IAppListViewModel +import com.android.settingslib.spaprivileged.model.app.userId import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow @@ -135,7 +136,7 @@ private fun <T : AppRecord> AppListModel<T>.AppListWidget( header() } - items(count = list.size, key = { option to list[it].record.app.packageName }) { + items(count = list.size, key = { list[it].record.itemKey(option) }) { remember(list) { getGroupTitleIfFirst(option, list, it) } ?.let { group -> CategoryTitle(title = group) } @@ -149,6 +150,9 @@ private fun <T : AppRecord> AppListModel<T>.AppListWidget( } } +private fun <T : AppRecord> T.itemKey(option: Int) = + listOf(option, app.packageName, app.userId, System.identityHashCode(this)) + /** Returns group title if this is the first item of the group. */ private fun <T : AppRecord> AppListModel<T>.getGroupTitleIfFirst( option: Int, |