728x90
안드로이드 공부 기록하기
대부분의 안드로이드 앱에서는 이 뷰와 코드 간의 상호작용을 구현해야 한다.
예를 들어, 사용자가 EditText 뷰에 입력한 값을 읽거나, TextView 에 보여 줄 데이터를 변경할 때다.
기 경우 코드에서 레이아웃 뷰를 참조할 수 있어야 하며 그동안 여러 가지 방법이 사용.
가장 오래되고 대중적인 방법은 'findViewById() 함수를 사용하는 것이다
val myTextView:vTextView = findViewById(R.id.myTextView)
이렇게 뷰의 참조를 얻으면 다음과 같이 뷰의 속성을 사용
myTextView.text = "Hello"
findViewById() 함수는 레이아웃 뷰를 사용할 수 있는 방법이지만 제약이 존재한다.
findViewById() 함수의 경우는 레이아웃에 아직 생성되지 않은 뷰의 참조를 얻을 수 있어서(null 상태) 해당 뷰의 속성을 사용하려 할 때 null 포인터 예외가 발생할 수 있다는 단점이 있다.
위의 점을 개선하기 위해 나온 방법이 뷰 바인딩이라는 형태로 레이아웃 뷰를 참조하는 것이다.
뷰 바인딩 활성화 하기
- Gradle 에 추가
android {
buildFeatures{
viewBinding true
}
}
- MainActivity
class MainActivity : AppCompatActivity() {
//private lateinit var binding: <바인딩 이름>
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//setContentView(R.layout.activity_main)
//binding = <바인딩이름>.inflate(layoutInflater)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
fun convertCurrency(view: View){
if (binding.dollarText.text.isNotEmpty()){
val dollarValue = binding.dollarText.text.toString().toFloat()
val euroValue = dollarValue*0.85F
binding.textView.text = euroValue.toString()
} else {
binding.textView.text = getString(R.string.no_value_string)
}
}
}
위의 코드처럼 binding 을 통해 사용할 layout.xml 과 연결
findByViewId() 함수를 사용하지 않아도 참조가 가능해진다.
참고 : 핵심만 골라 배우는 안드로이드 스튜디오.
728x90
반응형
'Android' 카테고리의 다른 글
Animation resource 정리 (0) | 2021.12.28 |
---|---|
[Kotlin] DataBinding 사용하기 (2) | 2021.12.23 |
[Android] 안드로이드 12 바뀐 점을 살펴보자! part.2 (0) | 2021.12.02 |
[Android] 안드로이드 12 바뀐 점을 살펴보자! part.1 (0) | 2021.12.01 |
[Android]Splash Screen 구현 Java (0) | 2021.09.20 |