본문 바로가기
프로그래밍/Android

[Android] 중복클릭 막기

by Youngs_ 2022. 12. 2.

<개요>

앱 개발 시 클릭리스너를 적용할때 리스너 호출을 빠르게 누르면 중복으로 호출 되는 경우가 발생함

리스너 호출 시 일정시간 이내에 재호출을 하지 못하게 변경하여 처리함


<적용방법>

1. OnSingleClickListener 생성하여 인터벌 발생 시킴

class OnSingleClickListener(
    private var interval: Int = 600,
    private var onSingleClick: (View) -> Unit
) : View.OnClickListener {

    private var lastClickTime: Long = 0

    override fun onClick(v: View) {
        val elapsedRealtime = SystemClock.elapsedRealtime()
        if ((elapsedRealtime - lastClickTime) < interval) {
            return
        }
        lastClickTime = elapsedRealtime
        onSingleClick(v)
    }

}

2. Extensions.kt 생성하여 OnSingleClickListener 클래스를 적용

// 클릭리스너
fun View.setOnSingleClickListener(onSingleClick: (View) -> Unit) {
    val oneClick = OnSingleClickListener {
        onSingleClick(it)
    }
    setOnClickListener(oneClick)
}

3. 사용하고자 하는 액티비티에서 리스너 호출

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    private val viewModel by viewModels<MainViewModel>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

        // 클릭리스너 호출
        binding.btn.setOnSingleClickListener {
           // ...
        }
    }
}

 


 

출처 : https://easy-1.tistory.com/m/22

댓글