Created
April 24, 2019 21:37
-
-
Save ValeryPonomarenko/3773365c4619f783c8b59e7f22e9a548 to your computer and use it in GitHub Desktop.
Rendering a Screen Based On Its ViewState
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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