기술적용

Databinding 구현

131 developer 2022. 3. 21. 11:02

 

 

gradle에서 dataBinding true로 설정

android {
    ...
    buildFeatures {
        dataBinding true
    }
}

 

Activity

val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
binding.lifecycleOwner = this
//binding.lifecycleOwner = this : 관찰가능한 상태로 변경
binding.viewmodel = viewModel

 

Fragment

val binding = DataBindingUtil.inflate<CalendarListBinding>(inflater, R.layout.fragment_home, container, false)

 

 

 

MainViewModel  파일

lateinit var todos: LiveData<List<Todo>>
	init {
		todos = getAll()
	}
	
	fun getAll() : LiveData<List<Todo>> {
		return db.todoDao().getAll()
	}

 

xml 파일

activity xml 파일 전체를 로 감싸기

<layout>
	<data>
    		<variable
            	name="viewModel"
                type="com.ilsamil.hiweather.kotlin.MainViewModel" />
	</data>
    
    	...
    
    	<TextView
        	android:text="@{viewModel.todos.toString()}"
        />
     
</layout>