728x90
반응형
DataBinding과 ViewBinding이 뭐가 다른가?
간단하게 말하자면, DataBinding은 이름처럼 데이터를 연결해주는 역할을 할 수 있다.
(데이터와 같이 결합해서 사용할 수 있음)
// 자세한 이론은 ViewBinding vs DataBinding 참고
세팅
build.gradle
android {
.
..
// 추가
buildFeatures{
dataBinding = true
}
}
반응형
Activity
xml
<layout></layout> 전체를 감싼다.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/dataBindingTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="50sp" />
</LinearLayout>
</layout>
MainActivity.kt
class MainActivity : AppCompatActivity() {
// 1. 추가
private lateinit var binding : ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 2. 추가
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
// 예제 코드
binding.dataBindingTextView.text = "바뀐 텍스트"
}
}
Fragment
XML
<layout></layout>으로 전체 레이아웃을 감싼다.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TestFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/fragmentText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment"
android:textSize="50sp" />
</FrameLayout>
</layout>
반응형
Fragment.kt
class TestFragment : Fragment() {
// 1. 추가
lateinit var binding: FragmentTestBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// 2. 추가
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_test, container, false)
// 예제
binding.fragmentText.text = "변경된 Fragment 텍스트"
// 3. 추가
return binding.root
}
}
728x90
반응형
'🚀 Development > Android' 카테고리의 다른 글
[안드로이드] Kotlin-Android-Extensions(KTX) deprecated된 이유 (0) | 2023.08.13 |
---|---|
[안드로이드] View Binding(뷰바인딩) 사용 방법 (0) | 2023.07.17 |
[Java 자바, Android 안드로이드] 채팅방 만들기 (0) | 2023.07.17 |
[안드로이드] Jetpack의 ViewModel이란? (사용법 예제) (0) | 2023.05.22 |
[안드로이드] JetPack의 LiveData란? (0) | 2023.05.22 |