У меня есть активность с двумя счетчиками. Первый счетчик (projectSpinner
) заполняет второй (contentSpinner
), используя поле project_id
данных List<Project>
. В некомпонентной архитектуре я просто храню List<Project>
внутри своей деятельности, а затем внутри onItemSelectedListener
делаю что-то вроде Project[position].project_id
, чтобы помочь мне заполнить второй счетчик (contentSpinner
)
Теперь, когда я пытаюсь принять архитектуру MVVM, я не могу понять, как получить это project_id
.
Вот что у меня есть:
projectViewModel = ViewModelProviders.of(this).get(SpinnerProjectViewModel::class.java)
spinnerModuleViewModel = ViewModelProviders.of(this).get(SpinnerModuleViewModel::class.java)
projectViewModel.getProjectData()?.observe(this, Observer<List<Project>> { list: List<Project>? ->
//create adapter for project spinner
projectSpinnerCustomAdapter = ProjectSpinnerCustomAdapter(this, list!!)
projectSpinner?.adapter = projectSpinnerCustomAdapter
})
projectSpinner?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
Toast.makeText(this@AddRecordingActivity, "No video selected", Toast.LENGTH_LONG).show()
}
override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) {
bindModuleSpinnerData(position)
}
}
private fun bindModuleSpinnerData(position: Int){
spinnerModuleViewModel.getSpinnerModuleData(10738)?.observe( this, Observer {contentList: List<Content>? ->
val contentSpinnerCustomAdapter =
ContentSpineerCustomAdapter(this@AddRecordingActivity, contentList!!)
contentSpinner!!.adapter = contentSpinnerCustomAdapter
})
}
projectId
, который я передаю своей функции ViewModel
, spinnerModuleViewModel.getSpinnerModuleData(10738)
теперь жестко запрограммирован.
Как вы получаете это (project_id
) от моей onItemSelected
функции?
Или есть лучший способ добиться этого?