一、思路
ViewModel作為View監聽器和View進行綁定,LiveData數據存放在ViewModel數據持久化,并具有觀察性。View通過監聽LiveData的數據變化,進行相應的UI操作。
UserRepository作為數據來源層,可以是本地數據庫SqlLite,本地文件,網絡數據
二、核心代碼
android 全局彈窗?1、ViewModel
package com.example.viewmodel_livedata.viewmodel;
import com.example.viewmodel_livedata.bean.LoginBean;
import com.example.viewmodel_livedata.repository.UserRepository;
import androidx.lifecycle.MediatorLiveData;
全局上下、import androidx.lifecycle.ViewModel;
public class UserViewModel extends ViewModel {
public MediatorLiveData liveData = new MediatorLiveData<>();
private UserRepository userRepository = new UserRepository();
/**
Android view?* 請求登錄
*
* @param userName
* @param pwd
*/
android viewmodel、public void requestLogin(String userName, String pwd) {
liveData.setValue(userRepository.execueLogin(userName, pwd));
}
}
2、Repository
android p?package com.example.viewmodel_livedata.repository;
import com.example.viewmodel_livedata.bean.LoginBean;
public class UserRepository {
/**
* 模擬 服務器登錄
android全局代理?* @param userName
* @param pwd
* @return
*/
public LoginBean execueLogin(String userName, String pwd) {
mediatorlivedata、if ("123".equals(userName) && pwd.equals("456")) {
return new LoginBean(200, " 登錄成功");
} else {
return new LoginBean(400, " 登錄失敗");
}
android、}
}
3、View
package com.example.viewmodel_livedata;
import android.os.Bundle;
android全局接收登陸、import android.view.View;
import android.widget.Toast;
import com.example.viewmodel_livedata.bean.LoginBean;
import com.example.viewmodel_livedata.viewmodel.UserViewModel;
import androidx.appcompat.app.AppCompatActivity;
Android登陸全局,import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
public class MainActivity extends AppCompatActivity {
private UserViewModel viewModel;
@Override
Android登錄通知全局,protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewModel = ViewModelProviders.of(this).get(UserViewModel.class);
viewModel.liveData.observe(this, new Observer() {
android自定義viewgroup、@Override
public void onChanged(LoginBean loginBean) {
Toast.makeText(MainActivity.this, loginBean.toString(), Toast.LENGTH_LONG).show();
}
});
}
public void login(View view) {
viewModel.requestLogin("123","4567");
}
}
三、源碼傳送門
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态