[Kotlin/Android] DataBinding에서 Data Class 사용

Programming/Android 2020. 8. 31. 10:39 Posted by 생각하는로뎅
반응형

1. Data Class 란

  1) 데이터 보관하기 위한 클래스.
  2) Kotlin(코틀린)에서는 이를 데이터 클래스(Data Class)라고 부른다.
  3) java 처럼 getter/setter을 정의해서 쓸 필요가 없고, 자동으로 인식하도록 되어 있다.
     (get 또는 set이라고 입력하면, 자동으로 변수가 인식된다.)
  4) toString(), hashCode(), equals(), copy()를 override하면, 그 함수는 직접 구현된 코드를 사용 할 수 있다.
  

 

2. DataBinding, Data Class 함께 쓰면 좋은점

  1) Data Class 는 DataBinding을 참조하므로, 이로인한 성능 향상이 될 수 있다.
  2) 변수 하나 수정으로, UI에 적용할 수 있다.
  
3. DataBinding, Data Class 함께 쓰면 단점

  1) 나중에 복잡한 코드에서 관리를 잘하지 않으면 서로 참조하여, 엉키는 현상이 발생할 수 있을것 같다.

 

4. 사용법

 

 

  1) Data Class 만들기

package kr.co.jinisoftware.aboutme

data class MyName(var name: String = "", var nickName: String = "")

  

 2) xml 데이터 맵핑 및 데이터 클래스 명시

<layout>
		...
		<!-- Data Class 명시 -->
		<data>
			<variable
				name="myName"
				type="kr.co.jinisoftware.aboutme.MyName" />
		</data>
		
		<!--
			Data Class 바인딩 
			@={클래스명.변수명}
		-->
		<TextView
			android:id="@+id/name_text"
			style="@style/NamesStyle"
			android:layout_width="match_parent"
			android:layout_height="wrap_content"
			android:text="@={myName.name}"
			android:textAlignment="center" />
		...
<layout>

 

  4) Data Class 선언 후, 데이터 수정 해보기

private val myName: MyName = MyName("jini")
	 
 ...
// xml에 명시된 myName(Data Class)의 name 변수 값을 수정하면, xml에 맵푕된 @={myName.name} 으로 데이터가 변경된다.
myName?.name = nicknameEdit.text.toString()
	 
// 뷰 갱신
invalidateAll()
...

 

반응형