Android Kotlin Click Event
Notepad96
·2021. 10. 7. 06:45
1. 결 과
2. activity_main.xml (메인 레이아웃)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/btn01"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/black"
android:text="Btn 01"/>
<Button
android:id="@+id/btn02"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/black"
android:text="Btn 02"/>
<Button
android:id="@+id/btn03"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/black"
android:text="Btn 03"
android:onClick="btn03click"/>
</LinearLayout>
- btn03의 경우 Click Event를 함수로 선언하여 사용한다. 그래서 다른 버튼과 다르게 onClick을 추가해 준다.
3. MainActivity.kt
package com.example.clickevent
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn01.setOnClickListener{
Toast.makeText(this, "Btn1 Click!", Toast.LENGTH_SHORT).show()
}
btn02.setOnClickListener(clickListner)
}
val clickListner = View.OnClickListener { view ->
// when(view.id)
Toast.makeText(view.context, "Btn2 Click!", Toast.LENGTH_SHORT).show()
}
fun btn03click(view: View) {
Toast.makeText(view.context, "Btn3 Click!", Toast.LENGTH_SHORT).show()
}
}
ㄴ btn01
제네릭 방식을 사용하여 Click Event를 구현하였다.
해당 방식은 되도록이면 간단한 동작들을 작성하는 것이 가독성 면에서 좋다.
또한, 클릭 시 이벤트의 동작 중 다른 이벤트와 동작과 동일한 것이 있다면 코드의 재사용성이란 점에서 다른 방식을 고려해봐야 한다.
ㄴ btn02
ClickListener를 선언한 후 이를 사용하여 Click Event를 구현하였다.
해당 방식은 동일한 작업을 하는 버튼이 여럿 있다면 코드 재사용성을 높일 수 있는 좋은 방법이다.
또한, 위 예시에서 주석처리 되어있는 부분[when(view.id)] 처럼 Click한 View의 ID를 사용하여 구분함으로써 전체적인 동작 방식은 동일하지만 Click한 View에 따라서 약간의 다른 처리를 할 수도 있다.
ㄴ btn03
함수로 선언하여 Click Event를 구현하였다.
해당 방식을 사용하면 가장 가독성을 높일 수 있다.
또한, 2번 방식처럼 동일한 기능을 하는 버튼의 이벤트를 지정하여 코드를 재사용할 수 있으며 view의 id로 View의 따라서 약간의 처리를 다르게 할 수도 있다.
물론 여기서 말하는 약간이란 대략적은 동작은 동일한데 약간의 세부사항이 다를 경우 이를 구분하기 위해서라는 것이지 그렇지 않다면 분리된 다른 함수로 선언하는 것이 가독성 면에서 좋다.
4. 전 체 코 드
'Android' 카테고리의 다른 글
Android Kotlin BottomSheetBehavior - 하단 시트 띄우기 (0) | 2021.10.10 |
---|---|
Android Kotlin BottomSheetDialog - 아래 팝업 레이아웃 (0) | 2021.10.09 |
Android Kotlin id로 View 접근 (0) | 2021.10.07 |
Android Kotlin - AlertDialog(알림창) 기본 및 커스텀 (0) | 2021.08.22 |
Android Kotlin DB - insert, delete, update, search(삽입, 삭제, 업데이트, 탐색) (5) (0) | 2020.12.07 |