Listener در اندروید
Listener در اندروید

در این مقاله می‌خواهیم رویدادهایی که در  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 ها رو آموزش دادیم برای یادگیری بیشتر به آن مراجعه کنید.

 

تگ‌ها
اشتراک
0 نظرات

برای ارسال نظر باید وارد حساب کاربری خود شوید
ورود به حساب کاربری ثبت نام