中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

excel做網(wǎng)頁放進網(wǎng)站線上招生引流推廣方法

excel做網(wǎng)頁放進網(wǎng)站,線上招生引流推廣方法,關(guān)于電子商務(wù)網(wǎng)站建設(shè)的論文,業(yè)務(wù)員銷售管理軟件關(guān)于MVVM架構(gòu),我并不想花篇幅去做重復(fù)性的描述,網(wǎng)上一搜都是一堆講解,大家可以自行了解,我所做的只是以最簡單的例子,最有效的步驟,從零開始,去實現(xiàn)一個相對有點學習參考價值的項目。 先來看本…

關(guān)于MVVM架構(gòu),我并不想花篇幅去做重復(fù)性的描述,網(wǎng)上一搜都是一堆講解,大家可以自行了解,我所做的只是以最簡單的例子,最有效的步驟,從零開始,去實現(xiàn)一個相對有點學習參考價值的項目。

先來看本文預(yù)計的實現(xiàn)效果

可以看到,就是一個非常簡單的例子,當點擊登錄按鈕之后,對用戶的輸入進行一個簡單的判斷,滿足要求之后跳轉(zhuǎn)到首頁,并顯示用戶輸入的賬戶信息。那么接下來,將分步驟講解如何以符合MVVM設(shè)計規(guī)范的代碼來實現(xiàn)這個功能,重在展示如何從零開始,構(gòu)建一個MVVM框架。

本文使用的開發(fā)環(huán)境:

?????????Android Studio Iguana | 2023.2.1 Patch 1

Gradle版本:

????????gradle-8.4-bin.zip?

1.build.gradle文件(模塊級)

1.1使用DataBinding
defaultConfig {...buildFeatures {dataBinding = true}...}
1.2 引用依賴
dependencies {implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'implementation 'androidx.lifecycle:lifecycle-livedata:2.7.0'}

?2.繪制布局

當我們新建項目或者是新建activity時,系統(tǒng)會默認為我們生成一個布局文件,如下

我們需要把默認布局改成DataBinding布局。選中根部局標簽,按下Alt+Enter,在彈出的選項中,選擇第一個Convert to data binding layout,系統(tǒng)會自動為我們修改布局

修改后的布局:

<?xml version="1.0" encoding="utf-8"?>
<!--使用databinding功能,根布局需要使用<layout>標簽 -->
<layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"><!--這是Data Binding的<data>標簽,用于定義布局中使用的數(shù)據(jù)對象和表達式--><data></data><androidx.constraintlayout.widget.ConstraintLayoutandroid:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ui.main.MainActivity"></androidx.constraintlayout.widget.ConstraintLayout></layout>

3.Activity文件

/*** 登錄活動類,負責展示登錄界面并處理登錄邏輯。*/
public class LoginActivity extends AppCompatActivity {private ActivityLoginBinding binding; // 視圖綁定對象private LoginViewModel viewModel; // 登錄視圖模型/*** 在活動創(chuàng)建時調(diào)用,用于初始化界面和設(shè)置監(jiān)聽器。* * @param savedInstanceState 如果活動之前被銷毀,這參數(shù)包含之前的狀態(tài)。如果活動沒被銷毀之前,這參數(shù)是null。*/@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 啟用邊緣到邊緣的界面顯示EdgeToEdge.enable(this);// 使用數(shù)據(jù)綁定初始化視圖binding = DataBindingUtil.setContentView(this, R.layout.activity_login);// 設(shè)置視圖嵌入系統(tǒng)邊界的監(jiān)聽,用于動態(tài)設(shè)置視圖的內(nèi)邊距ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);return insets;});// 創(chuàng)建或獲取登錄視圖模型viewModel = new ViewModelProvider(this).get(LoginViewModel.class);// 將視圖模型綁定到視圖binding.setViewModel(viewModel);// 初始化點擊監(jiān)聽器和觀察者initListener();initObserver();}/*** 初始化按鈕監(jiān)聽器,用于處理登錄按鈕的點擊事件。*/private void initListener() {// 當?shù)卿洶粹o被點擊時,設(shè)置賬號和密碼,并觸發(fā)登錄動作binding.btnLogin.setOnClickListener(v -> {viewModel.setAccount(binding.etAccount.getText().toString());viewModel.setPassword(binding.etPassword.getText().toString());viewModel.login();});}/*** 初始化觀察者,用于處理登錄結(jié)果。*/private void initObserver() {// 觀察登錄結(jié)果,根據(jù)結(jié)果進行跳轉(zhuǎn)或顯示錯誤信息viewModel.getLoginResult().observe(this, loginResult -> {if (loginResult.isSuccess()) {// 登錄成功,跳轉(zhuǎn)到主界面,并傳遞賬號信息Intent intent = new Intent(this, MainActivity.class);intent.putExtra("account", viewModel.getAccount().getValue());startActivity(intent);finish();} else {// 登錄失敗,顯示錯誤信息Toast.makeText(this, loginResult.getErrorMessage(), Toast.LENGTH_SHORT).show();}});}
}

4.定義ViewModel

比較好的編程規(guī)范是,每創(chuàng)建一個Activity/Fragment,都創(chuàng)建與其對應(yīng)的ViewModel

/*** 登錄視圖模型類,用于管理登錄相關(guān)的數(shù)據(jù)和邏輯。*/
public class LoginViewModel extends ViewModel {// 賬戶名和密碼的LiveData對象,用于在UI變化時通知訂閱者private MutableLiveData<String> account = new MutableLiveData<>();private MutableLiveData<String> password = new MutableLiveData<>();private MutableLiveData<LoginResult> loginResult = new MutableLiveData<>();/*** 獲取賬戶名的LiveData對象。* @return 賬戶名的LiveData對象。*/public MutableLiveData<String> getAccount() {return account;}/*** 獲取密碼的LiveData對象。* @return 密碼的LiveData對象。*/public MutableLiveData<String> getPassword() {return password;}/*** 獲取登錄結(jié)果的LiveData對象。* @return 登錄結(jié)果的LiveData對象。*/public LiveData<LoginResult> getLoginResult() {return loginResult;}/*** 設(shè)置賬戶名。* @param account 用戶輸入的賬戶名。*/public void setAccount(String account) {this.account.postValue(account);}/*** 設(shè)置密碼。* @param password 用戶輸入的密碼。*/public void setPassword(String password) {this.password.postValue(password);}/*** 執(zhí)行登錄操作。* 根據(jù)輸入的賬戶名和密碼進行校驗,成功則更新登錄結(jié)果為成功,失敗則更新為錯誤信息。*/public void login() {if (checkAccount(getAccount().getValue(), getPassword().getValue())) {LoginResult successResult = new LoginResult(true, null);loginResult.postValue(successResult);} else {LoginResult errorResult = new LoginResult(false, "賬號或密碼錯誤");loginResult.postValue(errorResult);}}/*** 校驗賬戶名和密碼是否有效。* @param account 用戶輸入的賬戶名。* @param password 用戶輸入的密碼。* @return 如果賬戶名和密碼有效返回true,否則返回false。*/private boolean checkAccount(String account, String password) {if (account == null || password == null || account.isEmpty() || password.isEmpty()) {return false;}return true;}/*** 登錄結(jié)果類,封裝登錄是否成功和錯誤信息。*/public static class LoginResult {private boolean success;private String errorMessage;/*** 構(gòu)造登錄結(jié)果對象。* @param success 登錄是否成功。* @param errorMessage 錯誤信息,登錄失敗時提供。*/public LoginResult(boolean success, String errorMessage) {this.success = success;this.errorMessage = errorMessage;}/*** 判斷登錄是否成功。* @return 登錄成功返回true,失敗返回false。*/public boolean isSuccess() {return success;}/*** 設(shè)置登錄是否成功。* @param success 設(shè)置登錄成功狀態(tài)。*/public void setSuccess(boolean success) {this.success = success;}/*** 獲取錯誤信息。* @return 錯誤信息字符串,登錄成功時為null。*/public String getErrorMessage() {return errorMessage;}/*** 設(shè)置錯誤信息。* @param errorMessage 設(shè)置登錄失敗的錯誤信息。*/public void setErrorMessage(String errorMessage) {this.errorMessage = errorMessage;}}}

5.MainActivity

/*** 主活動類,負責管理應(yīng)用程序的主要界面。*/
public class MainActivity extends AppCompatActivity {private MainViewModel viewModel; // 視圖模型,用于管理活動背后的業(yè)務(wù)邏輯private ActivityMainBinding binding; // 數(shù)據(jù)綁定實例,用于簡化UI更新/*** 在活動創(chuàng)建時調(diào)用。* @param savedInstanceState 如果活動之前被銷毀,這參數(shù)包含之前的狀態(tài)。如果活動沒被銷毀之前,這參數(shù)是null。*/@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 啟用邊緣到邊緣的UIEdgeToEdge.enable(this);// 設(shè)置數(shù)據(jù)綁定binding = DataBindingUtil.setContentView(this, R.layout.activity_main);// 設(shè)置視圖的內(nèi)邊距,以適應(yīng)系統(tǒng)欄位的高度ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);return insets;});// 初始化視圖模型viewModel = new ViewModelProvider(this).get(MainViewModel.class);// 從意圖中獲取賬戶信息Intent intent = getIntent();String account = intent.getStringExtra("account");// 將賬戶信息顯示在文本視圖上binding.text.setText("登錄賬戶為:"+account);}
}

至此,就完成了demo中展示的效果

http://www.risenshineclean.com/news/21500.html

相關(guān)文章:

  • 松江做公司網(wǎng)站營銷案例100例簡短
  • pc端網(wǎng)站營銷百度手機怎么刷排名多少錢
  • 中燃oa企業(yè)門戶專業(yè)網(wǎng)站優(yōu)化推廣
  • 臺州網(wǎng)站搜索優(yōu)化谷歌搜索引擎免費入口 臺灣
  • 臺州品牌網(wǎng)站建設(shè)seo關(guān)鍵詞優(yōu)化推廣價格
  • 教做網(wǎng)站的學校河南網(wǎng)站建設(shè)
  • 工信部網(wǎng)站用戶名專業(yè)的seo外包公司
  • 臺州seo網(wǎng)站推廣費用建立營銷型網(wǎng)站
  • 寧波本地網(wǎng)站排行網(wǎng)絡(luò)推廣引流方式
  • 太原做app網(wǎng)站建設(shè)國外網(wǎng)站排名前十
  • 不用dw怎么做網(wǎng)站西安網(wǎng)站維護
  • 網(wǎng)頁設(shè)計與制作教程江西高校出版社優(yōu)化設(shè)計答案六年級上冊語文
  • 河南專業(yè)網(wǎng)站建設(shè)日本產(chǎn)品和韓國產(chǎn)品哪個好
  • 網(wǎng)頁設(shè)計代碼模板網(wǎng)站企業(yè)網(wǎng)上的推廣
  • 網(wǎng)站常用架構(gòu)個人網(wǎng)站推廣方法
  • 武漢建設(shè)工程價格信息網(wǎng)杭州網(wǎng)站優(yōu)化體驗
  • 做時時彩網(wǎng)站牌照申請騰訊廣告
  • asp.net 價格查詢網(wǎng)站免費隱私網(wǎng)站推廣
  • 網(wǎng)站機房建設(shè)成本湖南網(wǎng)站seo營銷
  • 永城做網(wǎng)站利爾化學股票
  • 個人如何開網(wǎng)站賺錢平臺
  • 社區(qū)網(wǎng)站如何做長沙seo免費診斷
  • 網(wǎng)站前置審批流程seo建站公司
  • wordpress免費商城seo網(wǎng)站優(yōu)化軟件價格
  • 付費網(wǎng)站做推廣哪個好產(chǎn)品質(zhì)量推廣營銷語
  • 青海建設(shè)廳網(wǎng)站特種作業(yè)seo怎樣優(yōu)化網(wǎng)站
  • 百度推廣基木魚重慶seo網(wǎng)站管理
  • 肇慶網(wǎng)絡(luò)推廣公司重慶做優(yōu)化的網(wǎng)絡(luò)公司
  • 幫客戶做插邊球網(wǎng)站谷歌google地圖
  • 網(wǎng)站開發(fā)用技術(shù)seo優(yōu)化方案報價