일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- viewholder
- ui test
- 고차함수
- ActivityTestRule
- 구분선
- adapter
- 안드로이드13
- Android
- Error:Execution failed for task ':app:mergeDebugResources'
- 생명주기
- 안드로이드스튜디오
- 코딜리티
- recyclerview
- binding adapter
- high order function
- IntentTestRule
- fragment
- Fragment 수동 추가
- 테마 아이콘
- searchview
- 스와이프
- 재사용
- LayoutManger
- Fragment에서 Activity의 함수 사용하기
- 안드로이드
- espresso
- 안드로이드개발레벨업교과서
- 리사이클러뷰
- 코틀린
- 뷰변경 감지
- Today
- Total
목록개발 (235)
룬아님의 취중코딩
SearchView를 Databinding 하기 위해 bindingAdapter를 구현하고 리스너를 구현하기 위해 함수를 인자로 넘겨주는 방법을 소개한다. 이 코드의 목적은 활성화 된 SearchView에 값을 입력하고 키보드의 검색 버튼을 눌렀을 때 자신이 원하는 함수를 호출하도록 하는 것이다. 1. SearchFragment.kt val searchRepositoryByKeyWord = fun(searchKeyWord: String) { CoroutineScope(Dispatchers.Main).launch { val result = searchRepositoriesUseCase(searchKeyWord) if (result is Success) { _items.value = result.data.r..
레포지토리 패턴을 구현하면 하나의 데이터 소스를 상속 받아 local 데이터 소스와 remote 데이터 소스를 구현하게 된다. 완벽하게 같은 기능을 하는 경우에는 양쪽의 기능을 구현하면 되지만 local이나 remote에서만 사용되는 기능(예 : 북마크)은 어떻게 구현해야 할까라는 의문이 들었다. 우선적으로 들었던 생각은 해당 기능을 아예 다른 레포지토리로 분리하는 방법이였는데 유사한 기능을 가진 레포지토리를 2개를 만드는 것은 레포지토리 패턴을 사용하는 의도와 다르다는 생각이 들었다. 그러는 도중 구글 블루프린트의 이슈 중에 나와 비슷한 고민을 가지고 있는 이슈를 보게 되었다. https://github.com/android/architecture-samples/issues/201 [question] ..
분명 Activity와 Service 등에서 inject()를 사용하여 koin을 잘 사용하였는데 BroadcastReceiver를 상속받은 클래스에서 inject()를 찾을 수 없다고 하여서 검색을 해보았다. 결론은 클래스에 KoinComponent를 상속하여 해결할 수 있다. 보통 생명주기를 가지는 activity, service 등은 Koin에서 extension으로 구현하고 있기 때문에 따로 KoinComponent를 상속하지 않아도사용할 수 있지만 다른 요소는 기본적으로 지원하고 있지 않기 때문이다. // In Activity no need for KoinComponent class SomeActivity: AppCompatActivity() { // evaluates dependency eag..
라이브러리를 추가했는데 Duplicate files copied in APK가 뜨며 빌드가 되지 않는 경우가 있다. 개발을 하게 되면 많은 라이브러리를 사용하게 되는데 특정 라이브러리가 같은 경로에 같은 파일을 가지는 경우가 있는데 그때 Duplicate files copied in APK라는 에러가 발생한다. 이때 겹치는 파일 이름이 뜨기 때문에 앱 수준의 build.gradle에 packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META..