안드로이드에서 UI 이벤트 처리하기

dddiri·2022년 3월 25일
0

UI 이벤트
UI 레이어에서 UI 또는 ViewModel로 처리해야 하는 작업


용어 정리

ViewModel : 비즈니스 로직을 처리하는 클래스
비즈니스 로직 : 결제 또는 사용자 환경설정 저장과 같이 상태 변경과 관련하여 필요한 조치

RecyclerView의 사용자 이벤트

어댑터에서 뷰모델을 직접 참고하고 있으면 안되고,
어댑터에서 뷰모델의 데이터에 접근 해야 되는 경우에는 아래와 같이 람다 함수를 이용해야 합니다.

data class NewsItemUiState(
    val title: String,
    val body: String,
    val bookmarked: Boolean = false,
    val publicationDate: String,
    val onBookmark: () -> Unit
)

class LatestNewsViewModel(
    private val formatDateUseCase: FormatDateUseCase,
    private val repository: NewsRepository
)
    val newsListUiItems = repository.latestNews.map { news ->
        NewsItemUiState(
            title = news.title,
            body = news.body,
            bookmarked = news.bookmarked,
            publicationDate = formatDateUseCase(news.publicationDate),
            // Business logic is passed as a lambda function that the
            // UI calls on click events.
            onBookmark = {
                repository.addBookmark(news.id)
            }
        )
    }
}

0개의 댓글