I had the experience of mapping data classes from the presentation layer to simpler primitives in the UI layer and it creates too much complexity both on the view model and on the view:
- The view model have to update multiple live datas to express the state that the data class represents. In the scope of this discussion, the Enum.
- The view have to observe multiple live datas, which makes the construction code of the view/fragment/activity bigger than needed
- The view-model / view logic ends highly coupled: the view model can’t be reused to handle views that represent the same state with different components.
Because of that, generally I send the data-class / enum directly to the UI that handles the rendering of the data. If this is complex, I break down the job of rendering the ui to different classes, but all in the UI layer.