Котлин: как получить и установить текст в TextView в Android с помощью Kotlin?

Я новичок.

Я хочу изменить текст TextView в то время как нажмите на него.

мой код:

val text: TextView = findViewById(R.id.android_text) as TextView
    text.setOnClickListener {
        text.setText(getString(R.string.name))
    }

выход: я получил выход, но показываю использовать синтаксис доступа к свойствам.

может кто-нибудь сказать мне, как это сделать?

спасибо заранее.

9 ответов


в kotlin не используйте геттеры и сеттеры, как в java.Правильный формат kotlin приведен ниже.

val textView: TextView = findViewById(R.id.android_text) as TextView
textView.setOnClickListener {
    textView.text = getString(R.string.name)
}

чтобы получить значения из Textview мы должны использовать этот метод

 val str: String = textView.text.toString()

 println("the value is $str")

просто добавьте строку ниже и получите доступ к прямому объекту xml

import kotlinx.android.synthetic.main.activity_main.*

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        txt_HelloWorld.text = "abc"
    }

заменить activity_main по вашему имени XML


найдите текстовый вид из макета.

val textView : TextView = findViewById(R.id.android_text) as TextView

настройка onClickListener в textview.

textview.setOnClickListener(object: View.OnClickListener {
    override fun onClick(view: View): Unit {
        // Code here.
        textView.text = getString(R.string.name)
    }
})

скобки аргументов могут быть опущены из представления.setOnClickListener, если мы передаем один аргумент литерала функции. Итак, упрощенный код будет:

textview.setOnClickListener {
    // Code here.
    textView.text = getString(R.string.name)
}

использование:

val textView: TextView = findViewById(R.id.android_text) as TextView
textView.setOnClickListener {
    textView.text = getString(R.string.name)
}

или:

вы можете аннотировать каждый сайт вызова с @Suppress("UsePropertyAccessSyntax"), но это некрасиво.


  <TextView
        android:id="@+id/usage"
        android:layout_marginTop="220dip"
        android:layout_marginLeft="45dip"
        android:layout_marginRight="15dip"
        android:typeface="serif"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Google "
        android:textColor="#030900"/>


usage.text="hello world"

import kotlinx.android.synthetic.main.MainActivity.*

class Mainactivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.MainActivity)

        txt.setText("hello Kotlin")

    }

}

val text: TextView = findViewById<TextView>(R.id.text_id) as TextView

findViewById (R. id.android_text) не нуждается в типизации.


верхний пост имеет "как TextView", добавленный в конце. Вы можете получить другие ошибки компилятора, если вы оставите это. Следующее должно быть хорошо.

val text: TextView = findViewById(R.id.android_text) as TextView

где "android_text" - это идентификатор вашего textView