728x90
반응형
리스너란?
: 뷰에서 발생하는 이벤트에 대해 작업을 처리해주는 곳
리스너에서 사용하는 익명함수를 구현할 때
(1) 람다방식
(2) 익명함수 방식
(3) 이름을 명시하는 방식
익명함수/클래스
- 이름이 없는 함수/클래스
- 이름을 만들어 줄 필요가 없다.
- 한번만 사용한다.
(1) Empty Activity 생성
패키지 -> New -> Activity -> Empty Activity
이름 지정 후 Finish
activity_listener.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Listener">
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:text="hello"
android:id="@+id/hello" />
</LinearLayout>
생성된 activity_listener.xml 태그명 변경
orientation 추가
manifests / AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApplication">
<activity android:name=".Listener">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
</activity>
</application>
</manifest>
기존 것의 intent-filter 주석처리 후 액티비티 연결 변경
Listener.kt
package com.example.myapplication
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.TextView
class Listener : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_listener)
// 뷰를 Activity로 가져오는 방법
// 1> 직접 찾아서 가져온다
val textView : TextView = findViewById(R.id.hello)
// 2> xml을 import해서 가져온다.
// 익명함수
// 1 -> 람다 방식
textView.setOnClickListener {
Log.d("click", "Click!!")
}
// 2 -> 익명 함수 방식
textView.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
Log.d("click", "Click!!")
}
})
// 3 -> 이름이 필요한 경우(click)
val click = object : View.OnClickListener {
override fun onClick(v: View?) {
}
}
textView.setOnClickListener(click)
}
}
리스너 등록
728x90
반응형
'모바일 > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린 안드로이드 계산기 만들기 실습 (3) | 2021.04.27 |
---|---|
[Kotlin] Android Activity 개념 및 코드 (0) | 2021.04.27 |
[Kotlin] 자바 코드를 코틀린 코드로 자동 변환 (0) | 2021.04.11 |
[Kotlin] 코틀린 제너릭(Generic) (0) | 2021.04.11 |
[Kotlin] 코틀린 인터페이스, 상속과 인터페이스의 차이 (0) | 2021.04.11 |
댓글