电影网站建设方案ppt模板膜结构网站推广怎么做
- 作者: 五速梦信息网
- 时间: 2026年03月21日 11:25
当前位置: 首页 > news >正文
电影网站建设方案ppt模板,膜结构网站推广怎么做,签名设计网站,网站一天要发多少外链Databinding使用篇#xff08;迅速上手#xff09; 使用前需要在模块级别的build.gradle里面的android闭包里添加#xff1a; dataBinding{enabled true}接着在layout文件中按下Alt 回车#xff0c; 将布局转换成data binding layout即可#xff0c;此时编译就会生成对…Databinding使用篇迅速上手 使用前需要在模块级别的build.gradle里面的android闭包里添加 dataBinding{enabled true}接着在layout文件中按下Alt 回车 将布局转换成data binding layout即可此时编译就会生成对应的Binding java类 layout文件命名为xxx_xxx.xml生成的java类命名格式为XxxXxxBinding.java 例如activity_main.xml – ActivityMainBinding.java 常见使用
- 赋值 (variable的种类有很多种View基本类型引用类型等各种各样的)
在xml的 标签下添加标签写入对应的数据名以及数据类型
datavariablenametesttypecom.dongnaoedu.databinding.Idol /variablenameeventHandletypecom.dongnaoedu.databinding.EventHandleListener /
!– variable–
!– namestarUtil–
!– typecom.dongnaoedu.databinding.StarUtils /–
!– 使用静态类的方法可以直接import然后使用 而不需要在activity里面setXXX–import typecom.dongnaoedu.databinding.StarUtils /
/datavariable标签携带的是数据而import标签则可以引入静态方法
导入数据后就可以使用数据了在xml中使用 {}的格式去赋值或者使用工具类
例如
?xml version1.0 encodingutf-8?
layout xmlns:androidhttp://schemas.android.com/apk/res/android
xmlns:apphttp://schemas.android.com/apk/res-auto
xmlns:toolshttp://schemas.android.com/toolsandroidx.constraintlayout.widget.ConstraintLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityImageViewandroid:idid/imageViewandroid:layout_width300dipandroid:layout_height300dipandroid:srcdrawable/wangzhaiapp:layout_constraintBottom_toTopOfid/guidelineapp:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.495app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentapp:layout_constraintVertical_bias0.803tools:srcCompattools:sample/avatars /TextViewandroid:idid/textViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{test.name}android:textSize24spapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.498app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfid/guidelineapp:layout_constraintVertical_bias0.176tools:text姓名 /TextViewandroid:idid/textView2android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginTop48dpandroid:text{eventHandle.getStar(test.star)}android:textSize18spapp:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.498app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toBottomOfid/textViewtools:text五星 /androidx.constraintlayout.widget.Guidelineandroid:idid/guidelineandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationhorizontalapp:layout_constraintGuide_percent0.5 /Buttonandroid:idid/button2android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginBottom60dpandroid:text喜欢android:onClick{()-eventHandle.buttonOnClick()}app:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.498app:layout_constraintStart_toStartOfparent //androidx.constraintlayout.widget.ConstraintLayoutdatavariablenametesttypecom.dongnaoedu.databinding.Idol /variablenameeventHandletypecom.dongnaoedu.databinding.EventHandleListener /
!– variable–
!– namestarUtil–
!– typecom.dongnaoedu.databinding.StarUtils /–
!– 使用静态类的方法可以直接import然后使用 而不需要在activity里面setXXX–import typecom.dongnaoedu.databinding.StarUtils /
/data
/layout注意使用variable还需要在java代码中为binding对象传入数据
public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityMainBinding activityMainBinding DataBindingUtil.setContentView(this,R.layout.activity_main);Idol idol new Idol(旺仔,5);activityMainBinding.setTest(idol); //为binding设置数据activityMainBinding.setEventHandle(new EventHandleListener(this));//为binding设置数据}
}2. 在xml设置点击回调方法
当回调方法中参数只有一个且为View时:
public class EventHandleListener {private Context context;public EventHandleListener(Context context) {this.context context;}//回调方法一个参数且为Viewpublic void buttonOnClick(View view){Toast.makeText(context,喜欢 ,Toast.LENGTH_SHORT).show();}}
使用xxx类名.xxx方法名
android:onClick{eventHandle.buttonOnClick}回调方法为其他类型时
public class EventHandleListener {private Context context;public EventHandleListener(Context context) {this.context context;}//回调方法使用没有带View的参数时public void buttonOnClick(int data,String name){Toast.makeText(context,喜欢 data name,Toast.LENGTH_SHORT).show();}}使用()-xxx类名.xxx方法名(参数)
xxxxxxxxxx android:onClick{()-eventHandle.buttonOnClick(1,test.name)}当然也可以写成 android:onClick{(view)-eventHandle.buttonOnClick(1,test.name)}只不过此处的view可以忽略不写但俩种方式都是一样的 因为onclick方法的参数是(View view),所以在回调方法需要传入View对象的时候我们可以这样子 public class EventHandleListener {private Context context;public EventHandleListener(Context context) {this.context context;}public void buttonOnClick(View view,int data,String name){Toast.makeText(context,喜欢 data name,Toast.LENGTH_SHORT).show();}}使用 android:onClick{(theview)-eventHandle.buttonOnClick(theview,1,test.name)}上述也是通过lambda表达式将onclick的参数view传入到我们的回调方法中 - 属性值使用其他view的属性时 例如 TextViewandroid:idid/textView2android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginTop48dpandroid:text{StarUtils.getStar(test.star)}android:textSize18spapp:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.498app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toBottomOfid/textViewtools:text五星 /我要使用上面 id textView2的text时 Buttonandroid:idid/button2android:text{textView2.text}/!– button2的text使用了上面id为textView2的text –4. 将variable值传入给include包含的子布局时前提是variable的type类型一致 例如子布局 sub datavariablenamesubtypecom.dongnaoedu.databinding2.Idol //data父布局 datavariablenameidoltypecom.dongnaoedu.databinding2.Idol //data在父布局中将 idol 传给 子布局的sub includelayoutlayout/subapp:sub{idol}/
- 设置BindingAdapter 例如为imageview设置图片值 ?xml version1.0 encodingutf-8? layout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsdatavariablenamenetworkImagetypeString /variablenamelocalImagetypeint //dataandroidx.constraintlayout.widget.ConstraintLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityImageViewandroid:idid/imageViewapp:image{networkImage}app:defaultImageResource{localImage}android:layout_width300dipandroid:layout_height300dipapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparenttools:srcCompattools:sample/avatars //androidx.constraintlayout.widget.ConstraintLayout /layout写个adapter的java类: public class ImageViewBindingAdapter {/1.如果重载方法有多个参数的会优先调用多个参数的2.优先级(1)Picasso.get().load(url).placeholder(R.drawable.ic_launcher_background).into(imageView);* (2)优先级是大于imageView.setImageResource(resId);* 即 使用(1)加载图片后再使用(2)也无法改变图片内容*///加载网络图片BindingAdapter(image)public static void setImage(ImageView imageView, String url){Log.d(ning, setImage: 我是网络图片);if(!TextUtils.isEmpty(url)){Picasso.get().load(url).placeholder(R.drawable.ic_launcher_background).into(imageView);}else{imageView.setBackgroundColor(Color.GRAY);}}//加载本地图片BindingAdapter(defaultImageResource)public static void setImage(ImageView imageView, int resId){Log.d(ning, setImage: 我是本地图片);imageView.setImageResource(resId);}// //参数可选网络图片为空时加载本地图片BindingAdapter(value {image, defaultImageResource}, requireAll false)public static void setImage(ImageView imageView, String url, int resId){Log.d(ning, setImage: 我是本地网络图片);if(!TextUtils.isEmpty(url)){Picasso.get().load(url).placeholder(R.drawable.ic_launcher_background).into(imageView);}else{imageView.setImageResource(resId);}}}记得给binding类传入值 public class MainActivity extends AppCompatActivity {String TAG ning;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d(TAG, onCreate: );ActivityMainBinding activityMainBinding DataBindingUtil.setContentView(this,R.layout.activity_main);activityMainBinding.setLocalImage(R.drawable.wangzhai);activityMainBinding.setNetworkImage(networkUrl);} }6.双向绑定– ObservableField 双向绑定在xml中要区别于赋值赋值是{}, 而双向绑定是{} 用法举例 存放observableField数据的类 public class UserViewModel{public ObservableFieldUser userObservableField;public UserViewModel(){User user new User(Jack);userObservableField new ObservableField();userObservableField.set(user);Log.d(TAG, InitchangeValue: userObservableField.get());}}user类 public class User {private String userName;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName userName;}public User(String userName) {this.userName userName;}}使用 xml中editText ?xml version1.0 encodingutf-8? layout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsdatavariablenameuserViewModeltypecom.dongnaoedu.databinding5.UserViewModel //dataandroidx.constraintlayout.widget.ConstraintLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityEditTextandroid:idid/editTextandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:ems10android:inputTypetextPersonNameandroid:text{userViewModel.userObservableField.userName}app:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparent /Buttonandroid:idid/buttonandroid:onClickchangeValueandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textchageValueapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toBottomOfid/editText //androidx.constraintlayout.widget.ConstraintLayout /layout注意上面直接是 android:text{userViewModel.userObservableField.userName} 因为默认是调用getUserName()了。 java代码中 public class MainActivity extends AppCompatActivity {UserViewModel viewModel;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityMainBinding activityMainBinding DataBindingUtil.setContentView(this, R.layout.activity_main);viewModel new UserViewModel();activityMainBinding.setUserViewModel(viewModel); //为binding设置值//开启一个定时任务在java代码中改变user的usernamenew Timer().schedule(new TimerTask() {Overridepublic void run() {for(int i 0; i 3; i){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}User user (User)viewModel.userObservableField.get();user.setUserName(String.valueOf(i));viewModel.userObservableField.notifyChange(); //一定要调用notifyChange()方法通知属性值改变了}}},2000);}/* button的回调方法用来测试值是否有双线绑定* param view*/public void changeValue(View view) {User user (User)viewModel.userObservableField.get();Log.d(TAG, changeValue: viewModel.userObservableField.get() user.getUserName());} }运行后发现– 在java代码中改变user的username都会反馈到UI上在editText中随便输入都会改变user的username值做到了数据和UI间的双向绑定。 7 双向绑定BaseObservable的使用
- 写个类继承BaseObservable并给所要使用双向绑定的成员变量添加getter和setter方法
- getter方法要加上Bindable 加上后才会生成对应的字段的BR字段
- 在setter中调用notifyPropertyChanged(BR.xxx) 去通知对应数据改变了
- 在xml中要用 {xxx.xxx}的形式。
android:text{fileViewModel.cacheGenerateSize}使用
写类对象并提供对应的getter和setter方法。 以及为getter方法打上Bindable注解setter方法调用notifyPropertyChanged()
public class FileViewModel extends BaseObservable {private String systemTotalSpace ; //系统的总存储空间 MBBindablepublic String getSystemTotalSpace() {return systemTotalSpace;}public void setSystemTotalSpace(String systemTotalSpace) {if(systemTotalSpace ! null !systemTotalSpace.equals(this.systemTotalSpace)){this.systemTotalSpace systemTotalSpace;notifyPropertyChanged(BR.systemTotalSpace);}}在xml中传入对应值 datavariablenamefileViewModeltypenet.sunniwell.fileautobuilder.FileViewModel //data TextViewandroid:idid/tv_system_total_spaceandroid:layout_gravityendandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:gravitycenterandroid:text{fileViewModel.systemTotalSpace}android:textColor#60acfcandroid:textSize20spandroid:layout_marginBottom5dp /在java代码中将fileViewModel对象传入给打他binding
fileViewModel.setSystemTotalSpace( Constraint.SYSTEM_TOTAL_SPACE MB); mbind.setFileViewModel(fileViewModel);java代码中要改变值时直接调用fileviewmodel.setxxx即可 - databinding结合viewmodel以及livedata 结合livedata只需要加上 activityMainBinding.setLifecycleOwner(this);使用举例简单记分牌 viewmodel public class MyViewModel extends ViewModel {private MutableLiveDataInteger aTeamScore;private MutableLiveDataInteger bTeamScore;private Integer aLast;private Integer bLast;public MutableLiveDataInteger getaTeamScore() {if(aTeamScore null){aTeamScore new MutableLiveData();aTeamScore.setValue(0);}return aTeamScore;}public MutableLiveDataInteger getbTeamScore() {if(bTeamScore null){bTeamScore new MutableLiveData();bTeamScore.setValue(0);}return bTeamScore;}public void aTeamAdd(int i){saveLastScore();aTeamScore.setValue(aTeamScore.getValue() i);}public void bTeamAdd(int i){saveLastScore();bTeamScore.setValue(bTeamScore.getValue() i);}public void undo(){aTeamScore.setValue(aLast);bTeamScore.setValue(bLast);}public void reset(){aTeamScore.setValue(0);bTeamScore.setValue(0);}//记录上一次的分数private void saveLastScore(){this.aLast aTeamScore.getValue();this.bLast bTeamScore.getValue();}}layout文件 ?xml version1.0 encodingutf-8? layout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroidx.constraintlayout.widget.ConstraintLayoutandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityButtonandroid:idid/button1android:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_margin8dpandroid:backgroundandroid:color/holo_red_lightandroid:onClick{()-viewModel.aTeamAdd(1)}android:shadowColorandroid:color/background_lightandroid:textstring/button1android:textColor#FFFFFFapp:layout_constraintBottom_toTopOfid/guideline9app:layout_constraintEnd_toStartOfid/guideline3app:layout_constraintHorizontal_bias0.423app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfid/guideline8app:layout_constraintVertical_bias0.564 /Buttonandroid:idid/button4android:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_margin8dipandroid:backgroundcolor/colorAccentandroid:onClick{()-viewModel.bTeamAdd(1)}android:shadowColorandroid:color/background_lightandroid:textstring/button1android:textColor#FFFFFFapp:layout_constraintBottom_toTopOfid/guideline9app:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.0app:layout_constraintStart_toStartOfid/guideline3app:layout_constraintTop_toTopOfid/guideline8app:layout_constraintVertical_bias0.564 /Buttonandroid:idid/button2android:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_margin8dpandroid:backgroundandroid:color/holo_red_lightandroid:onClick{()-viewModel.aTeamAdd(2)}android:shadowColorandroid:color/background_lightandroid:textstring/button2android:textColor#FFFFFFapp:layout_constraintBottom_toTopOfid/guideline10app:layout_constraintEnd_toStartOfid/guideline3app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfid/guideline9 /Buttonandroid:idid/button3android:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_margin8dpandroid:backgroundandroid:color/holo_red_lightandroid:onClick{()-viewModel.aTeamAdd(3)}android:shadowColorandroid:color/background_lightandroid:textstring/button3android:textColor#FFFFFFapp:layout_constraintBottom_toTopOfid/guideline11app:layout_constraintEnd_toStartOfid/guideline3app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfid/guideline10 /Buttonandroid:idid/button6android:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_margin8dpandroid:backgroundcolor/colorAccentandroid:onClick{()-viewModel.bTeamAdd(3)}android:shadowColorandroid:color/background_lightandroid:textstring/button3android:textColor#FFFFFFapp:layout_constraintBottom_toTopOfid/guideline11app:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfid/guideline3app:layout_constraintTop_toTopOfid/guideline10 /Buttonandroid:idid/button5android:layout_width0dpandroid:layout_heightwrap_contentandroid:layout_margin8dpandroid:backgroundcolor/colorAccentandroid:onClick{()-viewModel.bTeamAdd(2)}android:shadowColorandroid:color/background_lightandroid:textstring/button2android:textColor#FFFFFFapp:layout_constraintBottom_toTopOfid/guideline10app:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfid/guideline3app:layout_constraintTop_toTopOfid/guideline9 /ImageButtonandroid:idid/imageButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:contentDescriptionstring/undoButtonandroid:onClick{()-viewModel.undo()}app:layout_constraintBottom_toTopOfid/guideline12app:layout_constraintEnd_toStartOfid/guideline3app:layout_constraintHorizontal_bias0.8app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfid/guideline11app:srcCompatdrawable/ic_undo_black_24dp /ImageButtonandroid:idid/imageButton2android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:contentDescriptionstring/resetButtonandroid:onClick{()-viewModel.reset()}app:layout_constraintBottom_toTopOfid/guideline12app:layout_constraintEnd_toEndOfparentapp:layout_constraintHorizontal_bias0.2app:layout_constraintStart_toStartOfid/guideline3app:layout_constraintTop_toTopOfid/guideline11app:srcCompatdrawable/ic_refresh_black_24dp /TextViewandroid:idid/textView1android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textTeam Aandroid:textSizedimen/teamTextSizeapp:layout_constraintBottom_toTopOfid/guideline7app:layout_constraintEnd_toStartOfid/guideline3app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfid/guideline2 /TextViewandroid:idid/textView2android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textTeam Bandroid:textSizedimen/teamTextSizeapp:layout_constraintBottom_toTopOfid/guideline7app:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfid/guideline3app:layout_constraintTop_toTopOfid/guideline2 /TextViewandroid:idid/scoreAandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{String.valueOf(viewModel.getaTeamScore())}android:textColorandroid:color/holo_red_lightandroid:textSizedimen/scoreTextSizeapp:layout_constraintBottom_toTopOfid/guideline8app:layout_constraintEnd_toStartOfid/guideline3app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfid/guideline7tools:text120 /TextViewandroid:idid/scoreBandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text{String.valueOf(viewModel.getbTeamScore())}android:textColorcolor/colorAccentandroid:textSizedimen/scoreTextSizeapp:layout_constraintBottom_toTopOfid/guideline8app:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfid/guideline3app:layout_constraintTop_toTopOfid/guideline7tools:text100 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline2android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationhorizontalapp:layout_constraintGuide_percent0.05 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline3android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationverticalapp:layout_constraintGuide_percent0.5 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline4android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationverticalapp:layout_constraintGuide_end-220dp /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline7android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationhorizontalapp:layout_constraintGuide_percent0.15 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline8android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationhorizontalapp:layout_constraintGuide_percent0.35 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline9android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationhorizontalapp:layout_constraintGuide_percent0.5 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline10android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationhorizontalapp:layout_constraintGuide_percent0.65 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline11android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationhorizontalapp:layout_constraintGuide_percent0.8 /androidx.constraintlayout.widget.Guidelineandroid:idid/guideline12android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationhorizontalapp:layout_constraintGuide_percent0.9 //androidx.constraintlayout.widget.ConstraintLayoutdatavariablenameviewModeltypecom.dongnaoedu.databinding7.MyViewModel //data /layout使用 public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);ActivityMainBinding activityMainBinding DataBindingUtil.setContentView(this,R.layout.activity_main);MyViewModel viewModel new ViewModelProvider(this, new ViewModelProvider.AndroidViewModelFactory(getApplication())).get(MyViewModel.class);activityMainBinding.setViewModel(viewModel);activityMainBinding.setLifecycleOwner(this); //一定要加入这个否则livedata无效(改变了livedata的值也反馈不到UI上)} }其他用法前往官网
- 上一篇: 电影网站建设成本2024恢复全员核酸
- 下一篇: 电影网站开发现状怎么创建网站充值和提现账号
相关文章
-
电影网站建设成本2024恢复全员核酸
电影网站建设成本2024恢复全员核酸
- 技术栈
- 2026年03月21日
-
电影手机网站建设企业网站怎样做可以搜索到
电影手机网站建设企业网站怎样做可以搜索到
- 技术栈
- 2026年03月21日
-
电影订票网站怎么做湖北省京山县建设局网站
电影订票网站怎么做湖北省京山县建设局网站
- 技术栈
- 2026年03月21日
-
电影网站开发现状怎么创建网站充值和提现账号
电影网站开发现状怎么创建网站充值和提现账号
- 技术栈
- 2026年03月21日
-
电影网站如何做seo免费的html模版下载
电影网站如何做seo免费的html模版下载
- 技术栈
- 2026年03月21日
-
电影网站制作教程及步骤网站上传不了照片
电影网站制作教程及步骤网站上传不了照片
- 技术栈
- 2026年03月21日






