Я новичок в Kotlin и ViewModel использует.
Я пытаюсь создать простой ViewModel, который получил список строк.
Идея состоит в том, чтобы обновить список путей изображения (String) в этой модели представления.
Моя проблема в том, что моя ViewModel не обновляется. Это только добавить 1 запись.
class PicturesViewModel : ViewModel() {
var pictureListLive: MutableLiveData<MutableList<String>> = MutableLiveData()
var list = ArrayList<String>()
fun addPictureToList(picture: String) {
list.add(picture)
pictureListLive.value = list
}
}
В своей деятельности я инициализирую viewModel и наблюдаю так:
private fun configureViewModel(){
this.picturesViewModel = ViewModelProviders.of(this).get(PicturesViewModel::class.java!!)
this.picturesViewModel.pictureListLive.observe(this, Observer{
if (it != null) {
Log.i("Pictures",it.size.toString())
}
})
}
И я добавляю одну строку в ViewModel:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_IMAGE_CAPTURE) {
picturesViewModel.addPictureToList(currentPhotoPath)
val intentPreview = Intent(this,PreviewActivity::class.java)
intentPreview.putExtra("Picture",currentPhotoPath)
startActivity(intentPreview)}
if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CHOOSE_PHOTO){
this.pictureSelectedPath = data?.data.toString()
Log.i("Photo",pictureSelectedPath)
}
}
ActivityOnResult приходит после съемки изображения на камеру. Я хочу обновить список строк в ViewModel, чтобы добавить путь к камере изображения после нескольких снимков.
Когда я использую его таким образом, сегодня размер списка ViewModel остается равным 1. Я думаю, что в нем только последний.
Спасибо за вашу помощь.