Я пробовал различные решения этой проблемы на SO, но пока ни одно из них не помогло: /
Я разрешаю пользователям выбрать фотографию из галереи, чтобы приложение отображало предварительный просмотр , сохраните изображение с подписью в базе данных комнаты, а затем отобразите несколько изображений в RecyclerView с помощью представлений карты Google Material Design.
Выбор изображения и его отображение в предварительном просмотре не проблема. Но отображение изображений в RecyclerView с помощью Picasso не работает. Он показывает только мое изображение с ошибкой (вектор сломанного изображения).
Для выбора изображения из галереи и отображения изображения предварительного просмотра используется следующий код:
private fun choosePicture() {
var chooseFile = Intent(Intent.ACTION_GET_CONTENT)
chooseFile.type = MIME_TYPE_IMAGE
chooseFile = Intent.createChooser(chooseFile, resources.getString(R.string.choose_file))
startActivityForResult(chooseFile, PICK_FILE_RESULT_CODE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
PICK_FILE_RESULT_CODE -> if (resultCode == -1) {
data!!.data?.let { returnUri ->
loadPicture(returnUri)
binding.constraintLayout.visibility = View.VISIBLE
viewModel.imagePath.value = returnUri
}
}
}
}
private fun loadPicture(uri: Uri) {
Picasso.get()
.load(uri)
.error(R.drawable.ic_broken_image_gray_24dp)
.into(binding.placeImage)
}
В моем ViewHolder I ' m, используя следующий код для отображения изображения (путь к изображению сохранен в базе данных комнаты как строка):
fun bind(location: Location) {
textViewLocationName.text = location.name
Picasso.get()
.load(Uri.parse(location.imagePath!!))
.error(R.drawable.ic_broken_image_gray_24dp)
.into(imageViewLocation)
}
При отладке URI выглядит следующим образом: content://com.android.providers.media.documents/document/image%3A4569
Есть ли какой-то проблемы с форматированием URI? Или есть другая проблема?
Спасибо!