Я получаю изображение от пользователя через камеру или галерею и преобразовываю его в ByteArray и передаю его в базу данных sqlite. Теперь я хочу вернуть его обратно в recyclerView, когда я декодирую ByteArray для отображения в recyclerView, который он дает мне "SkImageDecoder :: Factory returnнулевая ошибка в OnbindViewHolder, как декодировать Bytearray в Bitmap ??Я использовал метод BitmapFactory, но он не работает для меня.В чем проблема, я не могу получить это?
Растровое изображение в ByteArray
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
CameraCode ->
if (resultCode == Activity.RESULT_OK) {
var bitmap = data?.extras?.get("data")
image.setImageBitmap(bitmap as Bitmap)
stream = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream)
ByteImage = stream.toByteArray()
_data.Image = ByteImage
// if(_data.Image!==null)
// {
// Log.e("1","Ok")
// }
}
GalleryCode ->
if (resultCode == Activity.RESULT_OK) {
var Uri = data!!.data
var bitmap = MediaStore.Images.Media.getBitmap(activity.contentResolver, Uri)
stream = ByteArrayOutputStream()
image.setImageBitmap(bitmap as Bitmap)
bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream)
ByteImage = stream.toByteArray()
_data.Image = ByteImage
}
}
}
ByteArray в растровое изображение
override fun onBindViewHolder(holder: customViewHolder?, position: Int) {
var position = HomeList.get(position)
var bitmap = BitmapFactory.decodeByteArray(position.Image,0,position.Image!!.size)
holder?.text?.text = position.text
holder?.image?.setImageBitmap(bitmap)
holder!!.l1.setOnClickListener {
Toast.makeText(ctx,"${position.text}",Toast.LENGTH_SHORT).show()
}
}
inner class customViewHolder(view:View) : RecyclerView.ViewHolder(view)
{
var image = view.findViewById<ImageView>(R.id.recycler_image)
var text = view.findViewById<TextView>(R.id.recycler_title)
var l1 = view.findViewById<RelativeLayout>(R.id.home_layout)
}