MVVM Kotlin setup Android
1)Create project with kotlin
2) Add below library
//lifecycler
implementation "android.arch.lifecycle:runtime:1.1.1"
implementation "android.arch.lifecycle:extensions:1.1.1"
3)Creat MyViewModel Class
open class MyViewModel: ViewModel(){
var apiError = MutableLiveData<String>()
var onFailure = MutableLiveData<Throwable>()
var badRequest = MutableLiveData<String>()
var isLoading = MutableLiveData<Boolean>()
var isPullToRefreshLoading = MutableLiveData<Boolean>()
}
4)Creact LoginViewMode class
class LoginViewMode : MyViewModel() {
var response = MutableLiveData<User>()
fun login(name: String, pass: String) {
isLoading.value=true
LoginRepository.getLoginData({
response.value=it
isLoading.value=false
},{
apiError.value=it
isLoading.value=false
},name,pass)
}
}
5) Create LoginRepository object class
object LoginRepository {
fun getLoginData(
successHandler:(User)-> Unit,
failureHandler:(String)->Unit,
name:String,
passs:String
){
if(name.equals("ok")){
var userPojo:User=User("Amit","123465");
successHandler(userPojo)
}
else{
failureHandler("Something went wrong")
}
}
}
6) Attach observer to activity class
class LoginActivity:AppCompatActivity() {
var mViewModel:LoginViewMode?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mViewModel= ViewModelProviders.of(this).get(LoginViewMode::class.java)
attachObserver()
}
override fun onResume() {
super.onResume()
mViewModel?.login("amit","123")
}
fun attachObserver(){
mViewModel?.response?.observe(this, Observer {
it.let {
}
})
}
}
2) Add below library
//lifecycler
implementation "android.arch.lifecycle:runtime:1.1.1"
implementation "android.arch.lifecycle:extensions:1.1.1"
3)Creat MyViewModel Class
open class MyViewModel: ViewModel(){
var apiError = MutableLiveData<String>()
var onFailure = MutableLiveData<Throwable>()
var badRequest = MutableLiveData<String>()
var isLoading = MutableLiveData<Boolean>()
var isPullToRefreshLoading = MutableLiveData<Boolean>()
}
4)Creact LoginViewMode class
class LoginViewMode : MyViewModel() {
var response = MutableLiveData<User>()
fun login(name: String, pass: String) {
isLoading.value=true
LoginRepository.getLoginData({
response.value=it
isLoading.value=false
},{
apiError.value=it
isLoading.value=false
},name,pass)
}
}
5) Create LoginRepository object class
object LoginRepository {
fun getLoginData(
successHandler:(User)-> Unit,
failureHandler:(String)->Unit,
name:String,
passs:String
){
if(name.equals("ok")){
var userPojo:User=User("Amit","123465");
successHandler(userPojo)
}
else{
failureHandler("Something went wrong")
}
}
}
6) Attach observer to activity class
class LoginActivity:AppCompatActivity() {
var mViewModel:LoginViewMode?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mViewModel= ViewModelProviders.of(this).get(LoginViewMode::class.java)
attachObserver()
}
override fun onResume() {
super.onResume()
mViewModel?.login("amit","123")
}
fun attachObserver(){
mViewModel?.response?.observe(this, Observer {
it.let {
}
})
}
}
Comments
Post a Comment