쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Kotlin
  • Room
  • DataBinding
  • 리사이클러뷰
  • 배열
  • livedata
  • Android
  • 메소드
  • 백준
  • mvvm
  • compose
  • 컴포즈
  • AAC
  • 코틀린코테
  • 코테
  • 기초100제
  • 프로젝트회고
  • 자바
  • 자료구조
  • 코틀린
  • 알고리즘
  • 코드업100제
  • workmanager
  • Adapter
  • 변수
  • 객체지향
  • 상속
  • 코딩테스트
  • Jetpack
  • ViewModel

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

Android/JETPACK

[JETPACK개론] DataBinding 과 data class

2022. 7. 26. 23:59

DataBinding

TLOVER라는 앱을 론칭하면서 DataBinding을 계속 사용해왔고, 

블로그에도 개념을 정리했었지만 강의를 들으면서 부족했던 부분을 보완하고

그 부분들을 정리하고자 한다.

 

databinding ?

이름 처럼 데이터를 연결, 결합 해줄 수 없을까? 라고 생각해보면 된다.

 

viewbinding을 사용했을 때 해당 뷰에 있는 id에 접근해서 값을 변경해주었다.

하지만 서버에서 받은 많은 데이터들을 활용하여 값을 변경해줄 때는

binding을 통하여 데이터를 한 번에 저장한다음 xml에서 변경하면 편리할 것이다!!!

바로 databinding을 사용하면 된다!

 

1. gradle 파일에 다음과 같이 작성하자

buildFeatures{
    dataBinding = true
}

2. xml파일안에 있는 최상단레이아웃을 다음과 같이 <layout>태그로 감싸주고, <data>태그를 통해 해당 데이터 패키지 주소를 적어준다.

<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">

    <data>
        <variable
            name="person"
            type="com.example.databindingdataclass.Person" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

3. 해당 클래스에서 데이터바인딩을 사용할 준비를 한다.

private lateinit var binding : ActivityMainBinding
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
//데이터 결합
val person=Person("윤성식", 25)
binding.person = person

4. 데이터클래스를 생성한다.

data class Person (
    val name : String,
    val age : Int
        )

5. 해당 xml파일에서 데이터결합된 name : person을 가지고 접근한다.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{person.name}"
    android:textSize="50sp" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{Integer.toString(person.age)}"
    android:textSize="50sp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@{person.age > 30 ? `나이많음` : `나이적음`}"
    android:textSize="50sp" />

여기서 주의해야할 점이 있다!!

위의 데이터클래스를 보면 age는 Int형태로 되어있다.

하지만 xml파일에서는 text이기 때문에 .toString을 통해서 문자열로 바꾸어 주었다!

 

또한, age에 대한 조건 값도 xml파일에서 위처럼 설정할 수 있다.

대신 저 나이많음을 감싸고 있는 것은 작은따옴표가 아닌 백틱(`)을 사용해야한다

 

 

 

GitHub - SsongSik/JetPack_Android_Practice: Android practice using the Jetpack library

Android practice using the Jetpack library. Contribute to SsongSik/JetPack_Android_Practice development by creating an account on GitHub.

github.com

 

저작자표시 (새창열림)

'Android > JETPACK' 카테고리의 다른 글

[JETPACK개론] Activity/Fragment 의 ViewModel 공유  (0) 2022.08.12
[JETPACK개론] ViewModel ?  (0) 2022.08.11
[JETPACK개론] View,DataBinding + Adapter  (0) 2022.08.10
[JETPACK개론] ViewBinding  (0) 2022.07.24
[JETPACK개론] 들어가며  (0) 2022.07.23
    'Android/JETPACK' 카테고리의 다른 글
    • [JETPACK개론] ViewModel ?
    • [JETPACK개론] View,DataBinding + Adapter
    • [JETPACK개론] ViewBinding
    • [JETPACK개론] 들어가며
    쏭식
    쏭식

    티스토리툴바