320x100
[상황]
개발 중 메서드 파라미터에 함수를 넣어 호출하고 싶어서
고차 함수를 활용하여 개발한 코드
알고리즘 개발 시 좀 더 폭넓게 생각이 가능하지 않을까 싶다
[참고 플랫폼]
더보기
1. Android Studio Bumblebee | 2021.1.1 Patch 2 | Runtime version: 11.0.11
[코드 1 : MainActivity.kt]
class MainActivity : AppCompatActivity() {
// 고차함수 활용 : 파라미터로 변수를 넣으면서 이벤트 함수 시작
val fEvent: () -> Unit = { fEventStart() }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Button click 이벤트 작성
findViewById<Button>(R.id.btn_v1).setOnClickListener {
fEventAccess(fEvent)
}
}
// Button click 이벤트 작동 시 호출되는 메소드
private fun fEventAccess(fEvent: () -> Unit) {
Log.d("xkseks", "fEventAccess method !!")
fEvent() // 파라미터로 넘긴 고차함수
}
// 파라미터로 넘긴 고차함수의 로직 수행
private fun fEventStart() {
Log.d("xkseks", "fEventStart method !!")
findViewById<TextView>(R.id.tv_v1).text = "fEventSuccess"
}
}
[코드 2 : activity_main.xml]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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/btn_v1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="fEvent" />
<TextView
android:id="@+id/tv_v1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="none"
android:textAlignment="center"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>
활용성에 대해서는 상황에 따라 틀리니
특이 사황이 발생할 때 이런 방법 또한 있다고 생각하면 될 것 같다
320x100
'Android > Kotlin' 카테고리의 다른 글
[Android][Kotlin] Dialog 커스텀 및 스타일 수정 (0) | 2022.10.05 |
---|---|
[Android][Kotlin] 특정 시간 뒤 작업 Handler postDelayed (0) | 2022.10.04 |
[Android][Kotlin] AlertDialog (2) | 2022.10.04 |
[Android][Kotlin] 특정 View를 Bitmap으로 변환 후 이미지로 저장하는 방법 (0) | 2022.09.23 |
[Android][Kotlin] View 테두리 코드로 변경하는 방법 (0) | 2022.09.23 |