Получение объекта с использованием позиции, когда выбран элемент счетчика (onItemSelectedListener) - PullRequest
0 голосов
/ 19 июня 2019

У меня есть активность с двумя счетчиками. Первый счетчик (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 функции? Или есть лучший способ добиться этого?

...