[Android] LiveData Code

minnie·2022년 1월 5일
0

Jetpack

목록 보기
5/13
post-thumbnail

LiveData 실습

먼저 LiveData를 사용하기 위해서는 라이브러리를 추가해주어야한다.

build.gradle

implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.4.0")

LiveDataActivity

class LiveDataActivity : AppCompatActivity() {

    private var count = 0
    var mutableLiveText = MutableLiveData<String>() // livedata는 불변하기 때문에 갱신할 수 없다 하지만 mutablelivedata는 livedate를 상속받아 변경가능
    val liveText : LiveData<String>
        get()=mutableLiveText

    lateinit var binding : ActivityLiveBinding



    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this,R.layout.activity_live)

        //lifecyclerowner를 첫번째 인자로 전달합니다. 이를 통해 livedata에 lifecycle소유자와 바인딩
        // LiveData를 Observer를 이용해 관찰하고 현재 Activity 및 Observer를 LifeCyclerOwner로 전달
        liveText.observe(this, Observer{// observe 메소드를 통해  Observer 붙일 수 있음
            binding.textTest.text = it
        })

        binding.btnChange.setOnClickListener{
            mutableLiveText.value = "LiveData Test ${++count}"
        }

    }
}

Layout

<?xml version="1.0" encoding="utf-8"?>
<layout>
    <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=".livedata.LiveDataActivity">

        <TextView
            android:id="@+id/text_test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="LiveData Test"
            android:textSize="25sp"
            app:layout_constraintBottom_toTopOf="@id/btn_change"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_chainStyle="packed" />

        <Button
            android:id="@+id/btn_change"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="+ 1"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@id/text_test" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
profile
Android Developer

0개의 댓글