Пожалуйста, предложите способ исправить этот рабочий способ использования отдыха с помощью компонуемых объектов mvvm и lAndroid

Форум для тех, кто программирует под Android
Anonymous
Пожалуйста, предложите способ исправить этот рабочий способ использования отдыха с помощью компонуемых объектов mvvm и l

Сообщение Anonymous »

Прежде всего, это работает на 100% нормально, но я чувствую, что есть способ получше, и, возможно, я не до конца понимаю связь между изменяющимися данными и наблюдаемыми данными, хотя работает нормально..
ViewModel выполняет всю работу , но часть наблюдения верна? Не обращайте внимания на модернизацию.

Код: Выделить всё

@Composable
fun layoutX(){
val news = remember { mutableStateOf( ArrayList()) } //ignore 'by'
//... here i do the ui layout with rows cols and boxes and some part i got this
getLazyColumnNews(mainActivity, news)//another composable function
...
}

@Composable
fun getLazyColumnNews(....) {
val appViewModel = viewModel(AppViewModel::class.java) //just to get the vm ref
appViewModel.startRetrofitCall() //getting the json as pojos

appViewModel.news.observe(context,{ // im observing news in vm and update news.value
news.value = appViewModel.getNews().value as ArrayList
})

LazyColumn(
contentPadding = PaddingValues(...)
) {

//So news.value starts with 0 elemenst but updated when we observer change
items(news.value) {
getCardNoticia(info = it) // just mapping
Spacer(...)
}
}

//And the viewmodel that makes the call:
fun startCall(){
...//retrofit stuff
viewModelScope.launch(Dispatchers.IO) {
val response = apiCall.getRepoNews(UtilsStrings.urlResolve).awaitResponse()
if (response.isSuccessful){
// ... i mapped values to a new list so i can do this.
news.value = newListX
}

//last in view model this variable
var news = MutableLiveData()

fun getNews():LiveData{
return alNews
}
Это суммирует способ использования отдыха с использованием модификации, сопрограмм и композиции... но это похоже на хак... что в этом плохого, пожалуйста??

Подробнее здесь: https://stackoverflow.com/questions/790 ... mvvm-compo

Вернуться в «Android»