모던 안드로이드 아키텍처(슬기로운코딩생활) 참고


기존 프로젝트

  • Sample 객체
public class Sample{
	private String sampleName;
    
    public Sample(){}
    
    public String getSampleName(){
    	return sampleName;
    }
    
    public String setSampleName(String sampleName){
    	this.sampleName = sampleName;
    }
}
  • 레이아웃 안에 TextView
<TextView
        android:id="@+id/sample_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
  • Activity안 onCreate()안
sampleName = findViewById(R.id.sample_name);
fetchSample();
  • Activity안 fetchSample() 작성
private void fetchSample(){
	Sample sample = new Sample();
    sample.setSampleName("홍길동");

    updateUI(sample);
}
  • Activity안 updateUI()작성
private void updateUI(Sample sample){
	sampleName.setText(sample.getSampleName());
}

1. findViewById()로 레퍼런스를 가지고 오기 → View Binding
2. fetchSample()에서 데이터 로딩
3. updateUI()에서 레퍼런스에 데이터 세팅 → Data Binding

뷰 바인딩 (findViewById() 없애기)

  • viewBinding 활성화
    build.gradle(app)에 viewBinding { enabled true }
    →안드로이드 스튜디오가 Activity...Binding 클래스를 레이아웃 폴더 내의 레이아웃마다 만들어줌
    Activity...Binding 클래스findViewById()로 레퍼런스를 가지고 오기를 대신 해 줌
    →Project mode에서 찾아볼 수 있음
  • activity_...이라는 레이아웃 파일을 inflation해서 그 안의 id가 정의되어 있는 view들을 레퍼런스로 만들고 레퍼런스의 실 객체를 대입해주는 것까지 함
    Activity...Binding binding = Activity...Binding.inflate(getLayoutInflater());
  • binding 객체에는 inflation 된 객체의 최상위 객체를 가져오는 getRoot()를 이용
    setContentView(binding.getRoot()0;
  • 레퍼런스를 가져오는 과정을 생략하고, 데이터를 세팅할 때 binding.sample.setText(sample.getSampleName());

졸업프로젝트에 적용

졸업프로젝트 일지

profile
오늘도 영차🐜

0개의 댓글