J'utilise actuellement databinding
et MVVM architecture
pour Android. Quel serait le meilleur moyen d'obtenir des ressources de chaîne dans ViewModel.
Je n'utilise pas le nouveau composant AndroidViewModel
, eventbus
ou RxJava
Je parcourais l'approche d'interfaces où Activity sera responsable de la fourniture des ressources. Mais récemment, j'ai trouvé une question similaire avec this answer où une classe unique utilisant un contexte d'application fournit toutes les ressources.
Quelle serait la meilleure approche? ou y a-t-il autre chose que je peux essayer?
Vous pouvez accéder au contexte en implémentant AndroidViewModel au lieu de ViewModel.
class MainViewModel(application: Application) : AndroidViewModel(application) {
fun getSomeString(): String? {
return getApplication<Application>().resources.getString(R.string.some_string)
}
}
Vous pouvez également utiliser l'ID de ressource et ObservableInt pour que cela fonctionne.
ViewModel :
val contentString = ObservableInt()
contentString.set(R.string.YOUR_STRING)
Et alors votre vue peut obtenir le texte comme ceci:
Android:text="@{viewModel.contentString}"
De cette façon, vous pouvez garder le contexte en dehors de votre ViewModel