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 {

}
})
}
}

Comments

Popular posts from this blog

Android SQLite Example

Android Retrofit Tutorial

Load and Play Video in android using video url.