0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AndroidStudio: ViewModel の使い方

Posted at

こちらと同じことを行いました。
とにかく簡単にViewModelまとめ

プロジェクトの作成

プロジェクト名: View01

環境

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

画面

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

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?