Après avoir renseigné mon Spinner à partir d'un appel d'API asynchrone, quel que soit l'élément que je choisis
Bonjour,
Si je viens solliciter l'aide de la communauté aujourd'hui, c'est par ce que ça fait bientôt une semaine que je bloque sur ce souci.
Je passe une requête à l'aide de retrofit et de RxJava à mon API à partir de mon premier fragment, puis j'affiche la réponse reçue dans un Spinner. Mais à chaque fois que je sélectionne un élément de mon spinner et que je clique sur le bouton frag_button_choose de mon premier fragment pour l'envoyer à un second fragment, je reçois toujours le premier élément de mon spinner.
Voici le code de mon fragment,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
class SkillUpFragment : Fragment() {
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()]!!
println("!!!!!!!!AVANT DE CLIQUER SUR LE BUTTON!!!!!!!!!!!")
println(skill)
frag_button_choose.setOnClickListener {
println("!!!!!!!!APRES AVOIR CLIQUER SUR LE BUTTON!!!!!!!!!!!!")
println(skill)
model.setText(skill)
}
}
}
}
} |
Je vous remercie d'avance pour toute aide!!