Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- springboot
- DialogFragment
- Button
- 리눅스
- cocoapod
- podinit
- PostgreSQL
- RestAPI
- editText
- prolificinteractive/material-calendarview
- addTextChangedListner
- Dialog
- viewmodel
- calendar
- backgroundTint
- livedata
- android
Archives
- Today
- Total
코코딩딩
[안드로이드] DataBinding 본문
MVVM 디자인 패턴에 대해 이해하고 당장 정리하고 싶지만 당장의 실력으로는 깔끔한 정리가 어려울 것 같아 당장 사용할 수 있는 코드들을 연습해보면서 이해하고자 한다.
DataBinding
데이터 바인딩은 button이나 editText등 레이아웃의 구성요소들을 findViewByid()를 이용해 호출하는 것이 아닌 선언적형식으로 데이터소스와 결합할 수 있는 라이브러리이다.
databinding을 사용하기 위해선 gradle에 다음과 같은 코드를 작성해주어야 한다.
android {
dataBinding {
enabled = true
}
}
또한 layout.xml에 기존 코드들을 <layout>으로 감싸고 xmlns 들을 <layout>에 넣어준다.
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">
<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_marginTop="350dp"
android:text="Hello World!"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnTest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="버튼"
app:layout_constraintEnd_toEndOf="@+id/textView"
app:layout_constraintStart_toStartOf="@+id/textView"
app:layout_constraintTop_toBottomOf="@+id/textView" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
MainActivity
package com.example.ex01;
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingComponent;
import androidx.databinding.DataBindingUtil;
import android.os.Bundle;
import android.view.View;
import com.example.ex01.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
binding.btnTest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//버튼 눌렀을때 동작할 코드
}
});
}
}
gradle에 databinding을 추가하고 레이아웃xml에 <layout>을 추가했다면 ActivityMainBinding을 다 치기전에 자동완성이 될 것이다. 이는 activity의 이름에 따라 자동생성되는 이름이다.
선언한 binding에 DataBindingUtil.setContentView(this,R.layout.activity_main); 을 넣어주면 레이아웃과 연결된다.
이후 binding. 을 하면 자신이 추가한 레이아웃의 요소들의 id 목록이 보일것이다.
*발생한 오류*
프로젝트를 만들다가 ActivityMainBindeingImpl 나 bindingmapper 에 오류가 뜨는 경우가 있었다.
본인의 경우 mViewModel에 문제가 있다는 내용이 주로 나왔는데 프로젝트 클린으로 해결이 되었다.
'코딩 > Android' 카테고리의 다른 글
[안드로이드] ViewModel , LiveData (0) | 2022.04.05 |
---|---|
[안드로이드]Dialog 만들기 (DialogFragment, Custom Dialog) (0) | 2022.03.30 |