Путь к изображению не удалось сохранить в классе Object - PullRequest
0 голосов
/ 06 июля 2019

Во фрагменте A я пытаюсь получить объект изображения с сервера и сохранить его в totalListImage. Этот шаг работает отлично.

 var totalListImage: MutableList<Image> = mutableListOf()
 fun getWorkRequestImage() {
        GlobalScope.launch(Dispatchers.Main) {
            val request = WebApi.getImages(activity, obj?.id!!)
            request?.images?.let {
                for (i in it!!.iterator()) {
                    totalListImage?.add(i)
                }
            }
            mImageListAdapter.notifyDataSetChanged()
        }
    }

В том же фрагменте я разрешаю пользователю сделать снимок и сохранить захваченное изображение в totalListImage.

Здесь onActivityResult

 var path = data?.getExtras()?.getString("bitmap")
    if (path != null) {
            Log.d(TAG,path)
            val images = Image()
            images.image?.url = path
            totalListImage.add(images)
            display()
       }

Наконец, в методе отображения я хочу отобразить все URL. Но я получаю нулевой указатель на последнее захваченное изображение.

fun display() {
        for (i in totalListImage) {
            Log.d(TAG, i.image?.url)
        }
    }

Если я удаляю захваченное изображение, я получаю это

D/AFragment: https://xxx/image/633/1562424667277.png
D/AFragment: https://xxx/image/637/1562426838223.png

Путь к захваченному изображению подтверждается не нулевым, так как при его отображении я видел это

D/AFragment: /data/user/0/xxxk/cache/images/1562437144046.png

Почему я не могу сохранить путь к последнему изображению в images.image?.url?

Изображения

class Images : Serializable {
    @PrimaryKey
    var id = ""
    @Ignore
    var image : Image?=null
}

Изображение

@Parcelize
class Image(

    @ColumnInfo(name = "image")
    var url: String ? =null
) : Serializable,Parcelable

1 Ответ

1 голос
/ 07 июля 2019

Ссылаясь на этот код:

val images = Image()
images.image?.url = path
totalListImage.add(images)

и при условии, что вы имели в виду val images = Images() (иначе этот фрагмент даже не скомпилируется),
тогда проблема в том, что images.image это null.
Это из-за определения класса Images, где у вас есть var image : Image?=null.

Чтобы решить вас, либо:

  • изменить определение класса на ненулевое значение по умолчанию, например:
var image : Image? = Image()
  • или вручную инициализируйте его в приведенном выше фрагменте, например:
val images = Images()
images.image = Image()
images.image?.url = path
totalListImage.add(images)
...