AndroidStudio: ViewModel  の使い方

こちらと同じことを行いました。
[とにかく簡単にViewModelまとめ](https://qiita.com/KIRIN3qiita/items/7d833e2c010c0b2c02d9)

## プロジェクトの作成
プロジェクト名: View01

## 環境

```app/build.gradle.kts
（省略）
dependencies {
    val lifecycle_version = "2.5.1"
    
        // ViewModel
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")
    （省略）
```

## 画面

```xml:activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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">

<LinearLayout
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent">

        <TextView
                android:id="@+id/text1"
                android:layout_margin="10dp"
                android:textSize="50sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"/>

        <TextView
                android:id="@+id/text2"
                android:layout_margin="10dp"
                android:textSize="50sp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"/>

    </LinearLayout>

    <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="30dp"
            android:textSize="50sp"
            android:text="Count"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
```

## プログラム
フォルダー構造
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/f132fef4-cf69-09b2-2996-6d827578f725.png)


```MainActivity.kt
package com.example.view01

import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // アクティビティに属するカウンター
        var counterA = 0

        // インスタンスを作成
        val viewModel: CountViewModel = ViewModelProvider(this).get(CountViewModel::class.java)

        val text1 = findViewById(R.id.text1) as TextView
        val text2 = findViewById(R.id.text2) as TextView

        val button = findViewById(R.id.button) as Button
        button.setOnClickListener {
            counterA++
            viewModel.counterB++

            text1.setText(counterA.toString())
            text2.setText(viewModel.counterB.toString())
        }

    }
}
```

```CountViewModel.kt
package com.example.view01

// import android.arch.lifecycle.ViewModel
import androidx.lifecycle.ViewModel

class CountViewModel : ViewModel() {
    // ViewModelに属するカウンター
    var counterB: Int = 0
}
```

## 実行結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/0d047412-006c-a2c6-7e1f-e10ff3313d79.png)