آموزش کار با textView در کوتلین
در جلسه گذشته با TextView آشنا شدید. TextView فقط متنی را در خروجی نمایش می ده و قابلیت ورود اطلاعات را نداره. با شی یا ابزار editText میشه داده ای رو از ورودی دریافت کرد.
در این آموزش قراره دو تا EditText داشته باشیم دو Button و یک TextView .
کار Button اولی این هست که وقتی روش کلیک کردیم متن TextView به "من کاتلین هستم!"تغییر کنه.
در این روش من با استفاده از ID ای که برای Button تعریف کردم عملیات تغییر متن رو انجام می دم(ID رو برابر با button گذاشتم):
button.setOnClickListener
روش دومی که می تونیم برای رویداد کلیک یک دکمه(Button) بنویسیم قراره دو تا عدد از ورودی گرفته و اون دو عدد رو به integer تبدیل کنیم و بعد با هم ضرب کنیم و در خروجی چاپ کنیم. دقت داشته باشید که در قسمت Design بر روی Button ضرب کلیک کنید و خصوصیت onClick رو برابر با BtnClick قرار بدید(که من کدش رو برای شما نوشتم. کافیه کپی و جایگذاری کنید).
کار ساده ایه پس کارهای پایین رو انجام بدین:
فایل Main.activity.kt رو باز کنید و کدهای زیر رو در فایل خودتون paste کنید:
package ir.chasboon.kotlinapp
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener{
val textView = findViewById<TextView>(R.id.textView)
textView.text="من کاتلین هستم!"
}
}
fun BtnClick(v: View) {
val textView = findViewById<TextView>(R.id.textView)
val x = findViewById<TextView>(R.id.x)
val y = findViewById<TextView>(R.id.y)
val res = x.text.toString().toInt() * y.text.toString().toInt()
textView.text= res.toString()
}
}
دقت کنید اگر نام package من با شما یکی نبود، نام پکیج خودتون رو وارد کنید در اولین خط برنامه.
سپس فایل activity_main.xml رو باز کنید و کدهای زیر رو در اون قرار بدید:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="81dp">
<EditText
android:id="@+id/x"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:ems="10"
android:hint="num1"
android:inputType="number"
android:text="5"
app:layout_constraintTop_toBottomOf="@+id/textView"
tools:layout_editor_absoluteX="72dp"
tools:ignore="MissingConstraints" />
<EditText
android:id="@+id/y"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:ems="10"
android:hint="num2"
android:inputType="number"
android:text="3"
app:layout_constraintTop_toBottomOf="@+id/x"
tools:layout_editor_absoluteX="72dp"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/textView"
android:layout_width="299dp"
android:layout_height="96dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="hi"
android:textAlignment="center"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="67dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="click"
app:layout_constraintTop_toBottomOf="@+id/y"
tools:layout_editor_absoluteX="147dp"
tools:ignore="MissingConstraints" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:onClick="BtnClick"
android:text="ضرب"
app:layout_constraintTop_toBottomOf="@+id/button"
tools:layout_editor_absoluteX="133dp"
tools:ignore="MissingConstraints" />
</android.support.constraint.ConstraintLayout>
چنتا warning می بینید که چیز زیاد مهمی نیست و IDE میگه بهتره نام ابزارها رو در یک فایل string.xml تعریف کنید و برای اینکه آموزش ما ساده باشه متن ابزار ها رو در خود activity_main.xml نوشتیم.
حالا پروژه رو اجرا کنید و روی button ها یا دکمه ها کلیک کنید. مشاهده می کنید دو عدد با هم ضرب میشن و یا نام من کاتلین هستم نمایش داده میشه!
نکته: برای اینکه عمل ضرب انجام بشه باید رشته ی ورودی رو به integer تبدیل کنیم وگرنه خطا میگیریم:
x.text.toString().toInt()
نکته بعدی این هست که پایان هر خط کد نباید سمی کالن بذارید چون کاتلین بدون ; کار می کنه!
در کد کاتلین فوق ما مقدار دو ورودی رو دریافت کریدم و درون متغیر های x , y میریزیم. سپس رشته رو به Int تبدیل کردیم و عمل ضرب رو انجام دادیم.
نتیجه عمل ضرب رو در res ریختیم. سپس مقدار res رو به رشته تبدیل کردیم و درون textView برای نمایش قرار دادیم.
همچنین می توانید ویدیوهای آموزشی کاتلین را در اینجا مشاهده کنید: