본문 바로가기

안드로이드

retrofit2 ,okhttp 적용했던거 koin 적용해서 리팩토링 해보자 koin 사실 여기저기 다써야겠지만 일단 시작점으로 retrofit2 작성했던거에 리팩토링으로 koin을 적용해서 시작해보도록 하겠다 참고한 자료는 https://medium.com/@sunminlee89/koin%EC%9C%BC%EB%A1%9C-api%ED%98%B8%EC%B6%9C-%EB%AA%A8%EB%93%88-%EC%9D%98%EC%A1%B4%EC%84%B1-%EC%A3%BC%EC%9E%85%ED%95%98%EA%B8%B0-cec9c1ace45f Koin으로 API호출 모듈 의존성 주입하기 Koin은 Dagger와 같은 의존성 주입 라이브러리이다(엄밀히 말하면 Koin은 의존성 주입 라이브러리라고 하기는 어렵다고 한다) medium.com 와 문다빈의 뇌이다. 근데 위 블로그 이상하게 작성해놓아.. 더보기
4주차 과제중 배운것들 ViewModel관련 과제 4주차 보면 알듯이 뷰모델에서 비동기적으로 정보 끌어오는거 처리해서 가져와서 저장했었고 그에 따른 처리 인텐트나 토스트 메세지 등등은 액티비티에서 실행했다 근데 정보가져오는 버튼 리스너 에서 뷰모델의 비동기처리를하고 동시에 정보가져오는거 뿌려주는걸하면 비동기처리가 끝나기도 전에 실행해서 nullpointexception이나 내가 원하는걸 처리하지 못하는 일이 발생했다. 그래도 토스트메세지나 인텐트같은 액티비티에서 처리해야할것들은 따로있기에 방법을 생각해서 비동기 완료 여부를 나타내는 변수를 boolean형태로 라이브데이터로 놓고 옵저버를 달아서 변화가있을경우 처리하도록했다 그리고 비동기처리 성공여부 200인지 400인지는 변수에 true/false여부로 판단하였다. 그래서 해결.. 더보기
AAC ViewModel은 무엇인가? 찍먹부터하고 가보자 Viewmodel은 무엇인가 생각보다 심오하다. 사용법이 심오한건가? 어쨋든 개념부터 살펴보자 뭐 일단 MVVM 의 ViewModel과 AAC의 ViewModel은 엄연히 다른것이다. MVVM의 ViewModel 설명하려면 날새야하고 그걸 생략하고 우리가 다룰 AAC의 ViewModel은 MVVM의 ViewModel을 잘만들라고 구글에서 안드로이드의 특성에 맞도록 보조적인 장치들을 달아서 만들어준 느낌이다. 그래서 ACC의 ViewModel을 썻다고 사실 MVVM 에서 요구하는 ViewModel의 조건을 충족하지 못할 수 있다. 여타 많은 DataBinding이라던지 다양한 작업을 해줘야 MVVM의 ViewModel을 충족할수있다. 그래서 결국에 AAC ViewModel 에서 제공하는게 뭔데 씹덕아 하고.. 더보기
DataBinding의 BindingAdapter BindingAdapter는 우리가 기존에 DataBinding을 통해서 변수의 데이터를 직접 뷰에다 선언적으로 붙여주는것을 할때 직접 정의하지는 않았지만 androidx.databinding.adatpers 에 정의되어있는 어댑터들을 통해 textView 같은 View의 text속성에 변수를 선언 해줄수있었다. 이런식으로 이미 정의되어있는 어댑터들도 있지만 모든 부분이 다 정의 되어있지 않기에 우리가 원하는 부분의 Adapter가 정의되어있지 않은 경우 직접 커스텀해서 사용해야한다. ex)이미지뷰의 src 같은속성 혹은 뷰의 visibility같은것들을 조정하기 위하여 이런경우에 직접 BindingAdapter를 통해서 조작하여주는데 코드단에서 조작해줄수있는 부분을 미리미리 작성하는 느낌으로 타겟이되는.. 더보기
databinding의 Two-way Binding 안드로이드의 Two-way Binding을 살펴볼것이다. 우선 Two-way Binding 이 무엇인가? 개념적으로 보면 여태까지 적용시킨 데이터 바인딩은 코틀린 파일에있는 변수들을 직접 xml에 가져다 붙여서 변수의 내용을 xml에 표시하는것이였다. 그렇다면xml 파일에서 즉 사용자가 view에서(ex. edittext) 같은거에서 작성하는것을 변수로 받아오는것을 databinding으로 할수 없는것인가? 이 부분이 Two-way Binding이다. 즉 사용자가 xml에 입력한데이터 들을 변수와 연결시켜놓으면 그 변수에 저절로 들어가게 만드는것이다. 물론 실시간으로 하려면 livedata를 곁들인 그런형태가 되어야 하지만 어쩃든 그렇다. 그래서 이것의 쓰임새를 생각해보면 MVVM에서 뷰와 뷰모델을 느슨.. 더보기
리사이클러 뷰에 databinding적용해보기 사실 3주차 과제정리에 쭉해놨고 실제로 적용도 했다 하지만 빡갈통인 날 믿을수없어 나중에 찾아헤멜것을 걱정해서 다시 한번 정리한다. 두괄식으로 결론부터 말하자면 data를 적용하는 xml은 각 리사이클러 뷰의item xml파일에 를 넣어주고 각각 viewholder에서 데이터를 각각 받아온것들을 집어넣어주는 형태이다 viewholder에서는 각각 xml들을 갖고있을테니까 ㅎㅎ 그래서 실제로해본것을 정리했다 dataBinding을 리사이클러 뷰에 적용하기 리펙토링을 해보자 1. 당연히 gradle추가해주고 android { ... dataBinding { enabled = true } } 2.리사이클러의 아이템뷰 의 xml을 으로 감싼다. 아이템을 감쌌다. 3.data variable 추가 layout안에.. 더보기
3주차 과제중 배운것들 라디오 버튼 커스텀 selector의 state_checked 속성을 이용하기위해 그냥 버튼이아닌 라디오 버튼을 이용해서 버튼을 만들어줬다. - android:button="@null" 라디오 버튼에 동그라미 버튼 부분 없애려면 속성에 이렇게 넣어주면된다. fragment안의 fragment 처리 fragment안에서 fragment 처리할때는 activity에서 처리할때와 다르게 supportFragmentManager 를 사용하는것이 아닌 childFragmentManager를 사용해야한다. 또한 프래그먼트에서 부모의 프래그먼트 매니저를 접근하려면 ex)fragment1에서 activity의 fragment로 접근 이럴경우에는 parentFragmentManager를 사용한다. https://ddan.. 더보기
2주차 과제중 배운것 level 2 2-1 1.리사이클러뷰 항목마다 이벤트 리스너 달아주기 각 항목마다 클릭 이벤트 리스너 달아서 이벤트를 처리해보자 ViewHolder 혹은 onBindViewHolder() 함수 두곳에서 이벤트 처리 하는 방법이 있는데 우선 viewholder에서 처리해주는것부터 부터 봐볼것이다. 1-1ViewHolder에서 처리 우리가 viewbinding 을 이용해서 viewHolder를 만들었기에 ViewHolder의 생성자로 binding객체를 꽂아줬다. 그래서 이 binding객체의 root가 리사이클러뷰가 표현하는 항목하나 즉 item의 레이아웃에 접근할수있다 그래서 init함수를 만들어 root에 onClicklistener를 추가한다. 1-2 onBindViewHolder() 에서 처리 이 .. 더보기