1
votes

Comment convertir un objet de vue en ma disposition dans Kotlin

Comment accéder à page.questionTextView dans la fonction setAnswer

//Create the given page (indicated by position)
override fun instantiateItem(container: ViewGroup, position: Int): Any {
    val page = inflater.inflate(R.layout.layout_question, null)
    page.questionTextView.text = "hi"

    //Add the page to the front of the queue
    (container as ViewPager).addView(page, 0)
    return page
}

private fun setAnswer(page: View){
    //how to access page.questionTextView
}


1 commentaires

Vous pouvez déclarer la page comme variable globale private lateinit var page: View


3 Réponses :


0
votes

Vous pouvez déclarer la variable de page au niveau supérieur, c'est-à-dire directement dans le package. Par défaut, si vous ne spécifiez pas de modificateur de visibilité, votre variable sera publique. Cela signifie qu'il sera accessible partout (dans le package).

Plus d'informations sur la visibilité dans kotlin: https://kotlinlang.org/docs/ reference / visibilité-modifiers.html


0 commentaires

0
votes

Si vous créez la page var global dans votre classe, vous pouvez l'initialiser dans votre fonction instantiateItem et l'utiliser pour accéder à votre vue depuis la fonction setAnswer .

Essayez ceci

private lateinit var page: View
//Create the given page (indicated by position)
override fun instantiateItem(container: ViewGroup, position: Int): Any {
    page = inflater.inflate(R.layout.layout_question, null)
    page.questionTextView.text = "hi"

    //Add the page to the front of the queue
    (container as ViewPager).addView(page, 0)
    return page
}

private fun setAnswer(){
    //how to access page.questionTextView
    page.questionTextView.text = "your answer"
}


0 commentaires

1
votes

J'ai trouvé la solution: j'utilise la méthode "with" pour accéder à page.questionTextView

private fun setAnswer(page: View){
    with(page){
        questionTextView.text = "hi"
    }
}


0 commentaires