در این مقاله میخواهیم رویدادهایی که در Viewها وجود دارند را پیادهسازی کنیم.
در دوره رایگان آموزش برنامه نویسی اندروید با کاتلین با listenr ها در اندروید بیشتر آشنا خواهید شد.
رویداد (Listener)
هر View در زمان تعامل با کاربر رویدادی را میتواند اجرا کند. بهعنوانمثال کاربر وقتی روی دکمه Click میکند به رویداد Click نیاز دارد تا عملیاتی را انجام دهد.
در layout اکتیویتی Main یک button و یک Edittext قرار میدهیم.
<Button
android:id="@+id/bt_ok"
android:text="Ok"
android:layout_margin="20dp"
app:layout_constraintTop_toTopOf="parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/et_name"
android:layout_margin="20dp"
app:layout_constraintTop_toBottomOf="@+id/bt_ok"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
در اکتیوتی main پس از find کردن View ها برای دکمه ClickListener و LongClickListener را مینویسیم.
var btOk: Button? = null
var etName: EditText? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btOk = findViewById(R.id.bt_ok)
etName = findViewById(R.id.et_name)
listener()
}
private fun listener() {
btOk?.setOnClickListener {
Toast.makeText(this, btOk?.text.toString(), Toast.LENGTH_LONG).show()
}
btok.setOnLongClickListener{
Toast.makeText(this, "Long click detected", Toast.LENGTH_SHORT).show()
return@setOnLongClickListener true
}
setOnClickListener زمانی فراخوانی میشود که کاربر یکبار روی دکمه click کند.
setOnLongClickListener مواقعی که کاربر چند ثانیه دکمه را لمس میکند فراخوانی میشود.
حالا میخواهیم که وقتی کاربر در Edittext شروع به تایپ کردن کرد یک رویداد فراخوانی شود.
در اکتیویتی کدهای زیر را مینویسیم .
etName?.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
if (p0?.length!! < 1) {
btOk?.text="Ok"
} else {
btOk?.text = p0.toString()
}
}
override fun afterTextChanged(p0: Editable?) {
}
}
رویداد addTextChangeListener 3 متد دارد که هر متد برای کار خاصی تعبیه شده است.
متد beforeTextChanged همانطور که از اسم این متد مشخص است قبل از تایپ کردن فراخوانی میشود.
متد onTextChanged این متد همزمان با تایپ کردن کاربر فراخوانی میشود.
متد afterTextChanged بعدازاین که تایپ کاربر تمام شد این متد فراخوانی میشود.
هر View که در اندروید وجود دارد چندین رویداد خاص خودش را دارد و برنامهنویس بر اساس نیازی که دارد میتواند از این رویدادها استفاده کند.
در مقاله viewهای اندروید بصورت کامل به مبحث view ها رو آموزش دادیم برای یادگیری بیشتر به آن مراجعه کنید.
برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربریتان شوید