본문 바로가기

Android

kotlin mvvm 그리고 Any?

single live event 를 잘 써먹고 있는 중에
이벤트 전달하는걸 일반화 해야겠다 싶어

interface ICommandEventAware {
    val commandEvent: SingleLiveEvent<Pair<String, Any?>>
}

요렇게 생성하곤 ViewModel 에서 사용하고 있었는데
굳이 내가 commandEvent fun 을 새로 만들어야 하나 싶어

interface ICommandEventAware {
    val commandEvent: SingleLiveEvent<Pair<String, Any?>>

    fun commandEvent(cmd: String, data: Any? = null) {
        commandEvent.value = cmd to data
    }
}

이렇게 바꾸곤 xml 에서 commandEvent 를 호출해보니 컴파일이 안된다.

=_ =

이것저것 테스트를 해보니 data:Any?= null 이 부분 때문에 컴파일이 안되는걸 확인했는데
이걸 어째야 할것인가?

====

좀더 테스트 해보고는 이렇게 사용하면 되긴 하겠다 싶은데 쬠 낭비되긴 하지만 전체적으로는 직접 기입하지 않아도 되는 코드가 많아서 나쁘지는 않은 듯...

@{() -> model.commandEvent(model.DEFINED_STRING, ``)}