til

DAY 5

paulaner80 2021. 12. 23. 11:38
반응형

코틀린 데이터 클래스

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 
해서 에러남.

'til' 카테고리의 다른 글

day 9  (0) 2021.12.27
DAY 6  (0) 2021.12.24
Day4  (0) 2021.12.22
day2  (0) 2021.12.20
day1  (0) 2021.12.20