Android setOnClickListener 중복 클릭 방지하기 with kotlin extension

setOnClickListener 확장 함수로 변환

btn.setOnClickListener { }
btn.click { }

fun View.click(click: (View) -> Unit) {
    setOnClickListener(click)
}

중복 클릭 기능도 추가 하기

btn.click { }

fun View.click(click: (View) -> Unit) {
    val listener = DuplicateClickListener { click(it) }
    setOnClickListener(click)
}

class DuplicateClickListener(private val click: (View) -> Unit) : View.OnClickListener {

    companion object {
        private const val CLICK_INTERVAL = 1000
    }

    private var lastClickedTime: Long = 0L

    override fun onClick(v: View?) {
        if (isSafe() && v != null) {
            lastClickedTime = System.currentTimeMillis()
            click(v)
        }
    }

    private fun isSafe(): Boolean {
        return System.currentTimeMillis() - lastClickedTime > CLICK_INTERVAL
    }
}

결론



Related Posts