Как преобразовать вид объекта в мой макет в kotlin - PullRequest
1 голос
/ 14 марта 2019

Как получить доступ к page.questionTextView в 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
}

Ответы [ 3 ]

1 голос
/ 14 марта 2019

Я нашел решение: я использую метод «с» для доступа к page.questionTextView

private fun setAnswer(page: View){
    with(page){
        questionTextView.text = "hi"
    }
}
0 голосов
/ 14 марта 2019

Если вы создаете страницу var global для своего класса, вы можете инициализировать ее в вашей функции instantiateItem и использовать ее для доступа к вашему представлению из setAnswer function.

Попробуйте это

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 голосов
/ 14 марта 2019

Вы можете объявить переменную страницы на верхнем уровне, то есть непосредственно внутри пакета.По умолчанию, если вы не укажете модификатор видимости, ваша переменная будет общедоступной.Это означает, что он будет доступен везде (внутри пакета).

Подробнее о видимости в kotlin: https://kotlinlang.org/docs/reference/visibility-modifiers.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...