【发布时间】:2021-12-23 11:43:50
【问题描述】:
为什么我的可组合不会在更改 HashMap 的 MutableState 值时重新组合。
视图模型
val imageList: MutableState<HashMap<Int, Uri>> = mutableStateOf(HashMap())
fun setImage(imageUri: Uri) {
imageList.value[imagePosition] = imageUri
}
片段
if (viewModel.imageList.value[stepNo] != null && !TextUtils.isEmpty(
viewModel.imageList.value[stepNo].toString()
)
) {
Image(
contentDescription = "Recipe",
painter = painterResource(R.drawable.ic_baseline_fastfood_24),
modifier = Modifier
.padding(8.dp)
)
}
fun permissionCallbacks() {
imagePickerListener =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK) {
// There are no request codes
val data: Intent? = result.data
val selectedImageUri = data?.data
selectedImageUri?.let { viewModel.setImage(it) }
}
}
requestPermissionLauncher =
registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { isGranted: Boolean ->
if (isGranted) {
val galleryIntent = Intent(
Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI
)
galleryIntent.type = "image/*"
imagePickerListener?.launch(galleryIntent)
} else {
}
}
}
我通过调试在 setImage() 方法中正确设置了该值,但如果在更改 hashmap 的值时没有再次调用 viewModel.imageList.value[stepNo] 的条件。
【问题讨论】:
标签: android kotlin android-jetpack-compose