반응형
Greensky0026
삽질러의 대환장 공사판
Greensky0026
전체 방문자
오늘
어제
  • 분류 전체보기 (241)
    • Language (56)
      • JAVA (13)
      • Swift (38)
      • Kotlin (4)
      • Dart (0)
      • PHP (0)
      • JavaScript (1)
    • IDE & Framework (92)
      • Spring (10)
      • Android (48)
      • iOS (8)
      • NodeJS (1)
      • CodeIgniter (3)
      • Flutter (1)
      • 분류중 (18)
    • Infra (8)
    • Database (12)
    • VCS (4)
    • Debug Log (34)
      • java (7)
      • swift (3)
      • Android (9)
      • Web (7)
      • 삽질기 (7)
    • Others (19)
      • 코딩테스트 풀이 (0)
      • IT 이야기 (18)
    • 쉼터 (2)
    • 개발공부 (14)
      • Network (1)
      • 자료구조와 알고리즘 (2)
      • Code design (8)
      • ETC (1)
      • 아카이브 (1)

블로그 메뉴

    공지사항

    • 프로그래머스 코딩 테스트 관련글 비공개 처리

    인기 글

    태그

    • swfit
    • Java
    • 타입
    • 공부
    • 코딩테스트
    • swift
    • reduce
    • 프로그래밍
    • IT
    • level1
    • 프로그래머스
    • Android
    • map
    • 구축
    • ios
    • xcode
    • 개발
    • 예제
    • kotlin
    • JSP

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Greensky0026

    삽질러의 대환장 공사판

    AAC MVVM - (2)Data binding
    IDE & Framework/Android

    AAC MVVM - (2)Data binding

    2021. 10. 17. 20:27
    반응형

    앱단위 gradle 설정

    //build.gradle
    android{
    //...
    	
    	dataBinding{
    	        enabled = true
    	    }
    	}
    //...
    }

     

    databinding을 사용할 xml을 layout으로 감싸고 data태그 추가

    //xml
    
    <layout xmlns:android="http://schemas.android.com/apk/res/android">
    
    	<data>
            <variable
                name="user"
                type="com.example.dataBindingPractice.data.User" />
    	</data>
    
    	<LinearLayout
    	...
    	</LinearLayout>
    </layout>

    → data 태그의 user변수는 레이아웃 내에서 사용할 수 있는 속성의 이름이고 type은 사용할 속성이다.

    layout 내에서 @{} 구문을 사용해서 기록할 수 있다.

    ex) @{user.firstName}

     

    data binding을 사용할 수 있도록 class에 입력

    //결합
    ActivityMainBinding binding
    
    @Override
    protected void onCreate(Bundle saveInstanceState){
    	super.onCreate(saveInstanceState);
    	binding = dataBindingUtil.setContentView(this, R.layout.activity_main);
    	User user = new User();
    	binding.setUser(user);
    }
    ...

    bindingAdpater로 직접 레이아웃에 속성을 부여할 수도 있다.

    //BindingAdapter.kt
    object BindingAdapters {
    	fun setVisible(view: View, isVisible: Boolean){
    	        view.visibility = if (isVisible) View.VISIBLE else View.GONE
    	 }
    }

     

    bindingAdpater 사용 예제

    //MainActivity.kt
    
    val liveVisible = MutableLiveData<Boolean>()
    
    override fun OnCreate(saveInstanceState: Bundle){
    	...
    	binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
    	        binding.apply {
    	            lifecycleOwner = this@MainActivity
    	            activity = this@MainActivity
    	
    	            btnChange1.setOnClickListener{
    	                liveVisible.value = true
    	            }
    	            btnChange2.setOnClickListener {
    	                liveVisible.value = false
    	            }
    	        }
    }
    //activity_main.xml
    <layout...
    //...
    	<data>
            <variable
                name="activity"
                type="com.example.mvvmpractice.MainActivity" />
      </data>
    //...
    	<androidx.constraintlayout.widget.ConstraintLayout...
    	//...
    	<TextView
                android:id="@+id/text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="내가 사라져 볼게"
                //...
                app:visible="@{activity.liveVisible}"/>
    	
    	<Button
                android:id="@+id/btn_change1"
    		//...
    	/>
      <Button
                android:id="@+id/btn_change2"
    		//...
    	/>

    btn1을 누르면 visible이 true로, btn2를 누르면 visible이 false가 되게 된다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    반응형
    저작자표시 비영리 (새창열림)

    'IDE & Framework > Android' 카테고리의 다른 글

    [Kotlin] ContentResolver 기본 : 통화내역(Call log) 조회  (0) 2021.11.02
    AAC MVVM - (3)AAC ViewModel + ViewBinding  (0) 2021.10.17
    AAC MVVM - (1)Live Data  (0) 2021.10.17
    View binding 사용해보기  (0) 2021.10.17
    [Kotlin] retrofit2 간단한 사용법  (0) 2021.10.17
      'IDE & Framework/Android' 카테고리의 다른 글
      • [Kotlin] ContentResolver 기본 : 통화내역(Call log) 조회
      • AAC MVVM - (3)AAC ViewModel + ViewBinding
      • AAC MVVM - (1)Live Data
      • View binding 사용해보기
      Greensky0026
      Greensky0026
      점이 모여 선이 된다. 내 삽질도 언젠간 거대한 지하 도시가 되겠지!

      티스토리툴바