→ typealias 키워드로 람다식의 타입을 지정해, nullable 하게 이용할 수 있다
// 외부에서 injection 할 람다식 type 정의
typealias OnSelectListener = (PointData) -> Unit
typealias OnDrawListener = (PointData, SizeData, Path) -> Unit
private var setOnSelectedRectListener : OnSelectListener? = null
private var setOnMovingPointListener : OnSelectListener? = null
private var setOnDrawListener : OnDrawListener? = null
// CustomView에서 ViewModel 값 변화시키기 위한 함수 외부에서 구현후 injection
fun setOnSelectedRect(listener: OnSelectListener) {
this.setOnSelectedRectListener = listener
}
fun setOnMovingPoint(listener : OnSelectListener){
this.setOnMovingPointListener = listener
}
fun setOnDrawRect(listener : OnDrawListener){
this.setOnDrawListener = listener
}
// 이용하기
setOnDrawListener?.let{ it -> it(point,size, drawingPath) }
setOnSelectedRectListener?.let { it1 -> it1(PointData(x, y)) }
setOnMovingPointListener?.let{ mp -> mp(PointData(x, y))}