Я делаю вызов, используя модификацию и RxJava для моего API из моего первого фрагмента, затем я отображаю полученный ответ в Spinner.Но всякий раз, когда я выбираю предмет из моего Spinner и нажимаю кнопку sendButton моего первого фрагмента, чтобы отправить его во второй фрагмент, я всегда получаю первый элемент моего Spinner.
Это код моего фрагмента
class SkillUpFragment : Fragment() {
val TAG = SkillUpFragment::class.simpleName
lateinit var skillsSpin : Spinner
lateinit var model : SharedViewModel
private val myCompositeDisposable= CompositeDisposable()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.skill_up_fragment, container, false)
skillsSpin = view!!.findViewById(R.id.skill_spinner)
model = ViewModelProviders.of(activity!!).get(SharedViewModel::class.java)
return view
}
override fun onStart() {
super.onStart()
loadData()
}
override fun onStop() {
super.onStop()
myCompositeDisposable.dispose()
}
private fun loadData(){
val token = SharedPrefManager.getInstance(activity!!.applicationContext).loginResponse.token
val parsedJWT = JWT(token!!)
val metaId = parsedJWT.getClaim("id")
val id = metaId.asInt()
myCompositeDisposable.add(RetrofitClient.instance.getSkillsToChoose(Id(id!!))
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(this::handleResponse))
}
private fun handleResponse(skills: List<Skill>){
val skillsName = skills.map { it.name }
skillsSpin.adapter = ArrayAdapter<String>(context, android.R.layout.simple_list_item_1,skillsName)
skillsSpin.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
val skill = skillsName[id.toInt()]
//When i display the value of skill before the button listener i get the right value
Log.i(TAG, skill)
frag_button_choose.setOnClickListener {
//whenever i click on the button, no matter what item i select i only from the spinner, i get always the first !!!
Log.i(TAG, skill)
model.setText(skill)
}
}
}
}
}
Пожалуйста, это очень запутанно, я застрял больше недели, любая помощь приветствуется.Спасибо всем.