코틀린 데이터 클래스
data class Person(var name: String, var age: Int, var gender: String)
1. getter, setter
2. Canonical Methods : equlas(), hashCode(), toString()
3. copy()
4. 디스트럭쳐링
val james: Person = Person(Jane", 30, "female")
val (name, age, gender) = james
데이터 바인딩
1. app/build.gradle 에 dataBinding 요소를 추가
android {
...
buildFeatures {
dataBinding true
}
}
2. data binding 을 사용하는 xml 리소스는 <layout> 루트 태그로 시작하여야 한다.
activity_main.xml 에 대해 자동 생성된 binding class 의 이름은 ActivityMainBinding 이다.
3. setContentView() 함수 교체
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding= DataBindingUtil.setContentView(this,R.layout.activity_main)
}
}
4. data class 를 선언
data class User(val name:String ,val pass:String)
5. xml에 data 태그 선언
<layout>
<data>
<import type="android.view.View"/>
<variable
name="user"
type="com.paul.retrofit_test.User" />
</data>
..
android:text="@{user.name}"
...
android:text="@{user.pass}"
6. Activity user를 넣어줌.
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding= DataBindingUtil.setContentView(this,R.layout.activity_main)
binding.user = User("이름","pass")
}
}
***
onCreate(savedInstanceState: Bundle?)
사용해야하는데
onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?)
사용해서 요류남.
AppCompatActivity()
인데
AppCompatActivity
해서 에러남.