android 全局彈窗,android全局livedata,Android 使用ViewModel,LiveData高效、簡

 2023-10-07 阅读 28 评论 0

摘要:一、思路ViewModel作為View監聽器和View進行綁定,LiveData數據存放在ViewModel數據持久化,并具有觀察性。View通過監聽LiveData的數據變化,進行相應的UI操作。UserRepository作為數據來源層,可以是本地數據庫SqlLite,本地文件,網絡數據二、

一、思路

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");

}

}

三、源碼傳送門

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/128419.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息