Android

AndroidProgramming - Listener 등록 (Kotlin)

DevGoni 2021. 4. 8. 20:18
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")
        }
    }
}