日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Andriod --- JetPack (五):DataBinding + LiveData +ViewModel 简单实例

發布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Andriod --- JetPack (五):DataBinding + LiveData +ViewModel 简单实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Andriod — JetPack (一):初識 JetPack

2.Andriod — JetPack (二):LifeCycle 的誕生

3.Andriod — JetPack (三):ViewModel 的誕生

4.Andriod — JetPack (四):BaseObservable 與 ObservableField 雙向綁定

5.Andriod — JetPack (五):DataBinding + LiveData +ViewModel 簡單實例

6.Andriod — JetPack (六):Room 增刪改查

7.Andriod — JetPack (七):Room + ViewModel + LiveData 增刪改查實例

一、DataBinding

1.讓布局頁面承擔了部分原本屬于頁面的工作,是頁面文件和布局耦合度進一步降低。頁面文件:Activity。布局:activity_main.xml

2.減少了很多 findViewById 與 OnClickListener
布局文件可以包含一些簡單的業務邏輯

二、LiveData

在 ViewModel 中的數據發生變化時通知頁面
LiveData 與 ObservableField 同樣可以實現雙向綁定
這里的 Model 層下面的例子未呈現,等過后學到了 JetPack - Room 自然就懂了

三、ViewModel

1.它是介于 View(視圖)和 Model(數據模型)直接的橋梁
2.使視圖和數據能夠分離,也能夠保持通信
https://blog.csdn.net/qq_43290288/article/details/123478346

四:DataBinding + LiveData +ViewModel 實例

在 build.gradle 中添加 DataBinding 支持

android {dataBinding {enabled = true} }

自定義MyViewModel.java

import android.view.View;import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel;public class MyViewModel extends ViewModel {private MutableLiveData<Integer> aTeamScore;private MutableLiveData<Integer> bTeamScore;public MutableLiveData<Integer> getaTeamScore() {if(aTeamScore == null) {aTeamScore = new MutableLiveData<>();aTeamScore.setValue(0);}return aTeamScore;}public MutableLiveData<Integer> getbTeamScore() {if(bTeamScore == null) {bTeamScore = new MutableLiveData<>();bTeamScore.setValue(0);}return bTeamScore;}public void aTeamAdd(View view) {aTeamScore.setValue(aTeamScore.getValue() + 1);}public void bTeamAdd() {bTeamScore.setValue(bTeamScore.getValue() + 1);} }

MainActivity.java

import androidx.appcompat.app.AppCompatActivity; import androidx.databinding.DataBindingUtil; import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModelProvider;import android.database.DatabaseUtils; import android.os.Bundle;import com.example.mvvm20220312.databinding.ActivityMainBinding; import com.example.mvvm20220312.viewmodel.MyViewModel;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); // ActivityMainBinding 對應 activity_main.xmlMyViewModel viewModel = new ViewModelProvider(this, new ViewModelProvider.AndroidViewModelFactory(getApplication())).get(MyViewModel.class);binding.setViewModel(viewModel); // DataBinding 與 ViewModel 綁定binding.setLifecycleOwner(this); // 要想在綁定類中使用 LiveData 對象,我們需要指定生命周期所有者來定義 LiveData 對象的范圍。在綁定類實例化后指定 activity 作為生命周期所有者}}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <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"tools:context=".MainActivity"><data><variablename="viewModel"type="com.example.mvvm20220312.viewmodel.MyViewModel" /></data><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{String.valueOf(viewModel.getaTeamScore())}"android:textSize="36sp"tools:text="10"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.252"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.174" /><TextViewandroid:id="@+id/textView3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{String.valueOf(viewModel.getbTeamScore())}"android:textSize="36sp"tools:text="10"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.588"app:layout_constraintStart_toEndOf="@+id/textView2"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.174" /><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.207"android:onClick="@{viewModel::aTeamAdd}"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView2"android:text="藍隊"app:layout_constraintVertical_bias="0.499" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="紅隊"android:onClick="@{() -> viewModel.bTeamAdd()}"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.755"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView3"app:layout_constraintVertical_bias="0.499" /></androidx.constraintlayout.widget.ConstraintLayout> </layout>

學習內容來自動腦學院~

總結

以上是生活随笔為你收集整理的Andriod --- JetPack (五):DataBinding + LiveData +ViewModel 简单实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲欧美另类日韩 | 成人激情在线观看 | 国产激情av在线 | 亚洲一区偷拍 | 色偷偷av | 另类一区 | av夜夜 | 欧美| 午夜精品久久久 | 亚洲乱码国产乱码精品精大量 | 欧美色精品在线 | 狠狠干在线视频 | 农村妇女一区二区 | 秋霞av鲁丝片一区二区 | 国产精品三区四区 | 国产xxxx做受视频 | 久久一区国产 | 中日韩免费视频 | 在线观看成人 | 一区二区三区四区五区av | 熟睡侵犯の奶水授乳在线 | 国产不卡视频在线观看 | 在线伊人网 | 香蕉久久久久 | 日本三级少妇 | 国产在线a视频 | 欧美性生活视频 | 琪琪秋霞午夜被窝电影网 | 婷婷激情五月综合 | 免费在线日韩av | 天天干天天做 | 国产精品乱码一区二三区小蝌蚪 | 日韩av在线不卡 | 国产一区二区自拍视频 | 91麻豆精品国产 | 好屌妞视频这里有精品 | 污导航在线观看 | 中文在线最新版天堂 | 亚洲综合不卡 | 亚洲va久久久噜噜噜无码久久 | 久操青青| 午夜网址 | 黄色免费一级视频 | 少妇久久久久久久 | 91精品在线观看视频 | 一区二区三区四区视频 | 性视频欧美 | 色视频免费在线观看 | 182在线视频| 动漫3d精品一区二区三区乱码 | 欧美在线观看视频 | 丁香花完整视频在线观看 | 成年人看的网站 | 国产精品v欧美精品v日韩精品 | 黄色一级片免费在线观看 | 国产亚洲一区二区三区不卡 | 成人欧美一区二区三区黑人动态图 | 美女色呦呦 | 日日干夜夜干 | 一个色综合导航 | 国产麻豆电影在线观看 | 亚洲精品中文字幕乱码三区 | 久久久久久久影院 | 成人手机在线免费视频 | 夜夜骑av| 天堂伊人网 | 国产东北真实交换多p免视频 | www久久99| 二级黄色录像 | 92久久精品一区二区 | 人人草人人爽 | 欧美一级片播放 | jizzjizz在线观看| 91免费视频黄 | 久久人人爽天天玩人人妻精品 | 青青操在线视频 | 最新av在线网站 | 欧美日b视频 | 国产夜夜操 | 被黑人啪到哭的番号922在线 | 精品黑人一区二区三区在线观看 | 91精选| 少妇25p| 自拍偷拍色综合 | 亚洲 欧美 变态 另类 综合 | 国产成人高清在线 | 久久久亚洲一区二区三区 | 欧美性做爰猛烈叫床潮 | 五月天婷婷激情网 | wwxx日本 | 久久伊人亚洲 | 久久久久久久久久久av | 国产精品对白刺激久久久 | av电影在线观看不卡 | 91久久精品无码一区二区 | 青青草成人av | 国内自拍欧美 | 97国产精东麻豆人妻电影 | 高中男男gay互囗交观看 |