안녕하세요 요즘 데이터바인딩에 빠져있는 개발자입니다.
이제 어느정도 익숙해져서 코드도 깔끔해지는중인데
질문제목처럼 클릭이벤트 중복때문에 몇일째 앓고 있습니다 ㅠㅠ.
질문은
<Button
onClick="@{()->handler.onClick()}"/>
이렇게 xml에 정의해두고 버튼을 클릭하면 핸들러 클래스의 아래 메서드가 호출되잖아요
public void onClick(){
}
다른 경우에는 위와 같이 써도 문제가 없는데 버튼을 눌렀을때 화면전환이라던가 서버통신을 할때 문제가 생깁니다.
버튼을 1초에 한 5번 광클했을때 메서드에 5번 호출되는거를 현재 막을수가 없습니다.
메서드 안에 boolean을 하나 두고 바꿔봐도 너무 빠르게 호출되면 조건문도 다 무시됩니다..
지금은 클래스 안에서 말고 최상단 Application에서 static boolean으로 변수 하나 두면 막히긴 하더군요.. 근데 이게 너무 불안해서 혹시 다른 방법이 없을까 하고 질문을 올립니다..
데이터바인딩 안쓸때에는
button.setOnClickListener( [new View.OnClick] 이 부분을 [new OnSingleClick] 과 같이 커스텀해서 시간제어를 하면 됬었는데. 위와 같이 메서드안에 다이렉트로 들어가는 경우에는 어떻게 막을지 모르겠습니다 ㅠㅠ
처음 들어오는순간 enable(false) 처리하더라도 일단 메서드 안에 5번이 호출된상태라 먹히진 않고 들어온상태에서 제어를 해야할 것 같은데 좋은 방법이 안떠올릅니다.. 혹시 도움주실분 있으신가요~?