-
[Android 개발 종합반] 1주차 - BMI 계산기 (뷰 바인딩 View binding)안드로이드 2024. 2. 26. 20:21
✏️ TIL(Today I Learned)
뷰 바인딩(View Binding)은 안드로이드에서 뷰들을 코드에서 쉽게 참조할 수 있도록 해주는 기능이다. XML 레이아웃 파일에 정의된 각 뷰에 대한 참조를 자동으로 생성하여 사용할 수 있게 해준다. 이를 통해 findViewById()를 사용하여 뷰를 찾는 번거로움이 없다.
예를 들어, XML 레이아웃 파일에서 TextView에 대한 참조를 생성하려면 다음과 같다.
<TextView android:id="@+id/myTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, World!" />
그런 다음 해당 뷰를 액티비티에서 참조하려면 findViewById()를 사용해야한다.
val textView = findViewById<TextView>(R.id.myTextView)
그러나, 뷰바인딩을 이용한다면 이처럼 코드가 간결해진다.
val binding = ActivityMainBinding.inflate(layoutInflater) val textView = binding.myTextView
뷰 바인딩을 사용하는 편이 편하기도 하고, 뷰 바인딩은 뷰의 direct references 즉 직접 참조를 생성하므로 유효하지 않은 뷰 ID로 인해 null 포인터 예외(NPE)가 발생할 위험이 없다.
오늘은 [Android 개발 종합반] 1주차로 EditText에 신장과 체중을 입력하고 확인버튼을 누르면, BMI지수를 계산하여 그에 맞는 결과를 ImageView와 함께 알려주는 Activity로 전환되는 어플리케이션을 만들었다.
간단한 프로젝트이기 때문에 시간은 얼마 안 걸려서 뷰 바인딩(View binding)을 적용해봤다.
뷰 바인딩을 설정하려면, 프로젝트의 build.gradle 파일에서 뷰 바인딩을 활성해야한다.
// 안드로이드 스튜디오 4.0 이상 android { ... buildFeatures { viewBinding true } }
그후 Activity에서 binding 된 객체 안에 있는 id에 접근하여 사용하면 된다.
import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import com.example.mybmi_calculator.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.button.setOnClickListener{ if(binding.height.text.isEmpty()||binding.weight.text.isEmpty()){ Toast.makeText(this,"모두 입력하세요", Toast.LENGTH_SHORT).show() } else { val height : Int = binding.height.text.toString().toInt() val weight : Int = binding.weight.text.toString().toInt() val intent = Intent(this,ResultActivity::class.java) intent.putExtra("height", height) intent.putExtra("weight", weight) startActivity(intent) } } } }
📌 참고: https://jminie.tistory.com/141#1.%20%F0%9F%93%8C%C2%A0%20%EC%99%9C%20View%20Binding?
'안드로이드' 카테고리의 다른 글
[Kotlin 문법 강의] 3주차: Kotlin 객체 지향 프로그래밍의 기초 (0) 2024.03.06 [Kotlin 문법 강의] 2주차: Kotlin 프로그래밍의 기초 (0) 2024.03.05 [Kotlin 문법 강의] 1주차: Kotlin을 시작하기 전에 알아야할 내용 (0) 2024.03.05 [Android 개발 종합반] 3주차 - Mbti 테스트 (뷰페이저 ViewPager2) (0) 2024.02.28 [Android 개발 종합반] 2주차 - 로또번호생성기 (0) 2024.02.27