일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 에러
- Kotlin
- Gradle
- 스튜디오
- Android
- studio
- 코틀린
- 안스
- 깃헙
- 유튜브
- 웹뷰
- GIT
- Github
- error
- coroutine
- dart
- Retrofit
- ADB
- 안드로이드
- RecyclerView
- 의존성주입
- 안드로이드스튜디오
- WebView
- viewpager
- 안드로이드 스튜디오
- build
- MVVM
- image
- 코루틴
- 레트로핏
- Today
- Total
목록MVVM (7)
코딩하는 일용직 노동자
액티비티나 프래그먼트 내에서 ViewModel을 사용하려면 ViewModelProvider를 이용해 ViewModel을 생성해 사용할 수 있습니다. ViewModel을 생성할때는 파라메터가 있을때와 없을때의 생성방법이 차이가 있습니다. 파라메터가 없는 ViewModel은 아래처럼 생성이 가능합니다. val viewModel: MainActivityViewModel by lazy { ViewModelProvider(this)[MainActivityViewModel::class.java] } 하지만 MainActivityViewModel의 생성자에 파라메터가 있다면 위 방법으로 객체생성이 안됩니다. 테스트를 위해 Int형의 파라메터를 받는 MainActivityViewModel 클래스를 만들어보겠습니다. i..
MVVM 으로 개발할때 ViewModel은 View를 몰라야 합니다. (ViewModel을 만들고 사용하는 activity가 자신의 context를 넘겨주거나 하지 않습니다.) 때문에 ViewModel에서 View로 이벤트나 결과를 전달할 경우에는 View가 ViewModel을 observe 하다가 상태가 변하면 그에따른 처리를 하게 합니다. // ViewModel var resetList = MutableLiveData().apply { value = false } ... /** * Search 버튼 클릭 처리. */ fun onClickSearch() { if (!TextUtils.isEmpty(etStr)) { mPage = 1 resetList.value = true searchImage(etSt..
#1 어댑터 리사이클러뷰에 사용할 어댑터를 만듭니다. 3열의 그리드 형태로 표시할 수 있도록 속성값을 셋팅해줍니다. Glide 를 이용해 이미지를 표시할 수 있도록 util 패키지 아래에 imageLoader 클래스를 만들었습니다. class ImageLoader(private val context: Context) { fun imageLoadWithResourceID(resID: Int, v : ImageView) { Glide.with(this.context).load(resID).into(v) } fun imageLoadWithURL(url: String, v: ImageView) { Glide.with(this.context).load(url).into(v) } fun imageLoadWithFi..
#1 API 호출 및 파싱. 우선 api 호출 후 결과를 저장할 모델 클래스를 만듭니다. 포스트맨 에서 얻어낸 결과 json 을 이용해 안드로이드 스튜디오에서 DTO generator 플러그인을 이용해 편하게 만들었습니다. hits 를 MutableList 형태로 받도록 수정해줬습니다. #2 API 호출 콜백. MVVM구조에서 ViewModel은 자신을 사용하는 View를 몰라야 합니다. 안드로이드 개발문서에서도 ViewModel에 View references에 대한 참조가 없어야 한다고 강조합니다. 때문에 ViewModel에서 View로 이벤트나 결과를 전달해야 할 경우에는 View가 ViewModel을 observe하다가 상태가 변하면 그에 맞는 처리를 하게 했습니다. api 호출 후 결과를 리턴시키..
#1 홈화면 만들기 Pixabay 에서는 검색어를 통해 이미지와 동영상을 검색할 수 있습니다. api도 이미지검색api 와 동영상검색api 가 제공됩니다. 우선 레이아웃을 만드는 것부터 시작하겠습니다. res/layout 폴더에 fragment_home.xml 파일을 생성해줍니다. 홈화면 상단에는 검색어를 입력할 EditText 와 검색버튼, 그 아래 영역엔 RecyclerView 를 배치시켰습니다. 레이아웃파일에는 데이터바인딩을 이용할 수 있도록 셋팅해줬습니다. #2 데이타바인딩을 이용해 이벤트 처리. 되도록 클릭이벤트는 fragment_home.xml 파일과 HomeViewModel 파일에서 바로 처리되도록 했습니다. 데이터바인딩을 쓸때 "@{ }" 와 "@={ }" 이 있는데 "@={ }" 를 쓰면..
#1 인트로 화면과 메인화면 만들기 우선 앱이 실행되면 인트로화면을 몇초 보여준후 홈화면으로 이동하는 형태로 만들었습니다. IntroActivity 와 MainActivity 로 만들고 홈화면은 Fragment 를 포함하도록 만들었습니다. 그리고 서브화면들을 만들고 각 화면마다 별도의 ViewModel 을 만들었습니다. (일단 쓸지 안쓸지는 모르겠지만 다 만들어줬습니다.) #2 Base 클래스, MyApplication 만들기. 각 액티비티와 뷰모델이 상속받아 쓰도록 BaseActivity, BaseViewModel 클래스를 만들었습니다. Retrofit2 와 Koin 을 셋팅하기 위해서 MyApplication 클래스를 만들고 ViewModel 셋팅도 해줍니다. SharedPreference 를 편하게..
#0 최근 안드로이드 개발 트렌드 안드로이드 앱을 처음 배우고 개발할땐 디자인 패턴을 이용하지 않고 Activity 소스에 각종 이벤트와 로직 처리를 몽땅 집어넣고 작업했습니다. 그 후에 MVC, MVP 패턴으로 작업을 하는 개발자분들을 많이 볼 수 있었고, 뒤늦게 필자도 MVP 패턴을 사용 해보니 소스도 깔끔하고 유지보수 할때도 더 편리한 면이 있었습니다. 2017년 여름 구글I/O에서 구글은 AAC (Android Architecture Component)를 발표했습니다. ViewModel, LiveData, LifecycleObserver, DataBinding 등을 써서 MVVM 패턴으로 앱의 성능과 유지보수를 높일 수 있도록 했습니다. 최근에는 언어도 Java에서 Kotlin으로 많이 옮겨서 작..