Android Study

android viewBinding 방식(Java,kotlin)

85chong 2020. 2. 22. 22:56
728x90
반응형
SMALL

간단한 예제로 a.xml 파일에 

TextView id 값이 tv_text 를 클릭 했을때 tv_text 에 "hello" 를 적어보겠다.

 

 

* 예전부터 사용하던 viewbinding 방식 java

 

TextView tv_text = findViewById(R.id.tv_text);

....

        final TextView tv_text = findViewById(R.id.tv_text); 
        tv_text.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View view) { 
                tv_text.setText("hello"); 
            } 
        });

 

* ButterKnife viewbinding 방식 java

app > buildgradle 에 lib 추가

implementation 'com.jakewharton:butterknife:8.8.1'

 

(전역변수로 binding)

@BindView(R.id.tv_text ) TextView tv_text ;

....

(onCreate( ) 에서 선언)

ButterKnife.bind(this);

...

        tv_text.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View view) { 
                tv_text.setText("hello"); 
            } 
        }); 

 

 

* Kotlin extensions viewbinding 방식 kotlin

app > buildgradle 에 lib 추가

implementation "org.jetbrains.kotlin:kotlin-stdlib:$rootProject.ext.kotlin_version"

implementation "org.jetbrains.kotlin:kotlin-stdlib:$rootProject.ext.kotlin_version"
tv_text.setOnClickListener { tv_text.setText("hello") }

이때 주의할점은 binding 을 따로 하지 않아서 xml 에 대한 모든 id 값을 공유하므로, 이름을 id 값을

잘지어야 한다. 

ex) b.xml 에도 tv_text 가 있고, a.xml 에도 tv_text 가 있으면 충돌이 난다.

 

 

위에서 보는것과 같이 java -> kotlin 으로 사용하면 코드가 간결해지고, 거기다 kotlin extentios 까지사용하면

선언자체를 안해도 되서 간결의 극을 볼수있다.

 

-끝-