写点什么

【自学 Android】使用 DataBinding,ViewModel,LiveData 完成点赞小功能

用户头像
Android架构
关注
发布于: 2021 年 11 月 07 日

2.MyViewModel.java

package com.example.clickzan;


import androidx.lifecycle.MutableLiveData;


import androidx.lifecycle.ViewModel;


public class MyViewModel extends ViewModel {


private MutableLiveData<Integer> mutableLiveData;


public MutableLiveData<Integer> getMutableLiveData() {


if (mutableLiveData==null) {


mutableLiveData = new MutableLiveData<>();


mutableLiveData.setValue(0);


}


return mutableLiveData;


}


public void addCount(){


mutableLiveData.setValue(mutableLiveData.getValue()+1);


}


}

3.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">


<data>


<variable


name="data"


type="com.example.clickzan.MyViewModel" />


</data>


<androidx.constraintlayout.widget.ConstraintLayout


android:layout_width="match_parent"


android:layout_height="match_parent"


tools:context=".MainActivity">


<TextView


android:id="@+id/textView"


android:layout_width="wrap_content"


android:layout_height="wrap_content"


android:layout_marginStart="8dp"


android:layout_marginEnd="8dp"


android:layout_marginBottom="8dp"


android:text="@{String.valueOf(data.mutableLiveData)}"


android:textSize="36sp"


app:layout_constraintBottom_toBottomOf="parent"


app:layout_constraintEnd_toEndOf="parent"


app:layout_constraintHorizontal_bias="0.498"


app:layout_constraintStart_toStartOf="parent"


app:layout_constraintTop_toTopOf="parent"


app:layout_constraintVertical_bias="0.149" />


<ImageView


android:id="@+id/imageView"


android:layout_width="wrap_content"


android:layout_height="wrap_content"


android:layout_marginStart="8dp"


android:layout_marginTop="8dp"


android:layout_marginEnd="8dp"


android:layout_marginBottom="8dp"


android:contentDescription="@string/img_button_msg"


app:layout_constraintBottom_toBottomOf="parent"


app:layout_constraintEnd_toEndOf="parent"


app:layout_constraintHorizontal_bias="0.498"


app:layout_constraintStart_toStartOf="parent"


app:layout_constraintTop_toTopOf="parent"


app:layout_constraintVertical_bias="0.353"


app:srcCompat="@drawable/ic_thumb_up_black_24dp"


android:onClick="@{()->data.addCount()}"/>


</androidx.constraintlayout.widget.Cons


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


traintLayout>


</layout>

4.MainActivity.java

package com.example.clickzan;


import androidx.appcompat.app.AppCompatActivity;


import androidx.databinding.DataBindingUtil;


import androidx.lifecycle.ViewModelProviders;


import android.os.Bundle;


import com.example.clickzan.databinding.ActivityMainBinding;


public class MainActivity extends AppCompatActivity {


MyViewModel myViewModel;


ActivityMainBinding activityMainBinding;


@Override


protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);


activityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);


myViewModel = ViewModelProviders.of(this).get(MyViewModel.class);


activityMainBinding.setData(myViewModel);


activityMainBinding.setLifecycleOwner(this);


}


}

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
【自学Android】使用DataBinding,ViewModel,LiveData完成点赞小功能