Thursday, June 3, 2021

【ANDROID STUDIO】Live Data Builder

 package com.example.viewmodelscope


import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider

class MainActivity : AppCompatActivity() {
private lateinit var mainActivityViewModel : MainActivityViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var mainActivityViewModel = ViewModelProvider(this).get(MainActivityViewModel::class.java)
//mainActivityViewModel.getUserData()
mainActivityViewModel.users.observe(this, Observer { myUsers ->
myUsers.forEach {
Log.i("MyTag", " name is ${it.name}")// it will run in the background
}

})

}
}
package com.example.viewmodelscope

import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.liveData
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

class MainActivityViewModel: ViewModel() {
private var userRepository = UserRepository()
var users = liveData(Dispatchers.IO) {
val result = userRepository.getUsers()
emit(result)
}



}
package com.example.viewmodelscope
import kotlinx.coroutines.delay
class UserRepository {
suspend fun getUsers(): List<User> {
delay(8000)
val users: List<User> = listOf(
User(1, "Sam"),
User(2, "Taro"),
User(3, "Jane"),
User(4, "Amy")

)
return users
}
}
package com.example.viewmodelscope

data class User(val id : Int , val name : String)

No comments:

Post a Comment

[New post] All or Nothing

...