【Android】Android Architecture Components のViewModel試してみた
Android Architecture Components のViewModel
只今、Android Architecture Componentsを勉強しています。ViewModelを試してみたので、備忘録がわりにメモします。
以下は、ViewModelの値をチェックして、
空だったら:テキストをセット→テキストをTextViewにセットする。
それ以外:テキストをTextViewにセットする。
というものです。
build.gradleにライブラリ追加
1 2 3 4 5 6 7 8 9 10 11 |
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' //Add the library. implementation "android.arch.lifecycle:extensions:1.1.1" } |
ViewModel作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package com.kussuue.testviewmodel; import android.arch.lifecycle.ViewModel; public class MainViewModel extends ViewModel { private String message = ""; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } |
Activityに反映
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
package com.kussuue.testviewmodel; import android.arch.lifecycle.ViewModelProviders; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // ViewModel get the instance via ViewModelProviders. MainViewModel mainViewModel = ViewModelProviders.of(this).get(MainViewModel.class); // Get the TextView reference. TextView textView = findViewById(R.id.textView); if (mainViewModel.getMessage().isEmpty()){ mainViewModel.setMessage("Merry Christmas!!"); textView.setText(mainViewModel.getMessage()); } else { textView.setText(mainViewModel.getMessage()); } } } |
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" 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:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/> </android.support.constraint.ConstraintLayout> |
参考サイト
https://github.com/googlecodelabs/android-lifecycles/tree/master/app/src/main/java/com/example/android/lifecycles/step2
https://lab.sonicmoov.com/development/app-dev/android-architecture-components-viewmodel/