Skip to content

Instantly share code, notes, and snippets.

@ValeryPonomarenko
Created April 24, 2019 21:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ValeryPonomarenko/3773365c4619f783c8b59e7f22e9a548 to your computer and use it in GitHub Desktop.
Save ValeryPonomarenko/3773365c4619f783c8b59e7f22e9a548 to your computer and use it in GitHub Desktop.
Rendering a Screen Based On Its ViewState
class DestinationFragment : Fragment() {
//code...
@Inject
internal lateinit var renderer: Renderer<DestinationViewState>
private val viewModel by lazy { /* code ... */ }
//code...
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel.viewState.render(this, renderer, view)
}
}
inline fun <reified VS> LiveData<VS>.render(owner: LifecycleOwner, renderer: Renderer<VS>, view: View) {
observe(owner, Observer { renderer.render(view, it) })
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment