Android/Kotlin

[Android][Kotlin] 메서드 파라미터 함수 넣기 : 고차 함수 활용

자판을 두드리다 2022. 9. 20. 17:41
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