본문 바로가기

Android

AndroidProgramming - Listener 등록 (Kotlin)

728x90

Android에서 Listener를 등록하는 방법입니다. 

 

예제는 ClickListener를 통해 작성했습니다.

 

1. 익명 객체 전달(lambda)

class MainActivity : AppCompatActivity() {
    private val TAG = MainActivity::class.simpleName
    private lateinit var btn : Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn = findViewById(R.id.mbutton)
        btn.setOnClickListener {
            Log.d(TAG, "CLICK")
        }
    }
}

 

2. OnclickListener 인터페이스 구현

class MainActivity : AppCompatActivity(), View.OnClickListener {
    private val TAG = MainActivity::class.simpleName
    private lateinit var btn : Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn = findViewById(R.id.mbutton)
        btn.setOnClickListener(this)
    }

    override fun onClick(v: View?) {
        when(v?.id){
            R.id.mbutton -> {
                Log.d(TAG, "CLICK")
            }
        }
    }
}

 

3. Listener 객체 전달

class MainActivity : AppCompatActivity() {
    private val TAG = MainActivity::class.simpleName
    private lateinit var btn : Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        btn = findViewById(R.id.mbutton)
        btn.setOnClickListener(mClickListener)
    }

    val mClickListener : View.OnClickListener = object : View.OnClickListener{
        override fun onClick(v: View?) {
            Log.d(TAG, "CLICK")
        }
    }
}

'Android' 카테고리의 다른 글

[Android] Intent (명시적, 암시적)  (0) 2021.04.16
[Android] Activity 생명주기  (0) 2021.04.09
FCM (Firebase Cloud Messaging)  (0) 2021.04.03
Kakao Map API (카카오 지도 API)  (0) 2021.03.29
Extension functions(확장 함수)  (0) 2021.03.28