본문 바로가기

Android

(66)
👋Android의 모든 것 : 1️⃣ListView, 2️⃣RecyclerView https://goni95.tistory.com/173 👋Android에 모든 것 개념 목 차 👋Android에 모든 것 : 1️⃣Android, 2️⃣Android SDK, 3️⃣Platform Architecture 👋Android에 모든 것 개념 : 1️⃣App Manifest, 2️⃣Android Context, 3️⃣App Components 👋Android에.. goni95.tistory.com 1️⃣ListView 많은 수의 데이터 집합을 개별 Item 단위로 구성해 스크롤 가능한 리스트로 화면에 출력하는 ViewGroup 입니다. 리스트뷰는 화면에 보여지는 개수만큼 View를 그려놓고 그것을 View 배열이 관리하여 리스트뷰의 포지션에 따라 이 배열의 위치가 바뀌는 구조로 재활용 합니다. ..
Retrofit2, OkHttpInterceptor, Koin, RxKotlin, Coroutine, Sandwich 등을 이용해 내가 작성한 네트워크 통신 방법 Retrofit2을 이용해 여러 네트워크 통신 방법을 구현한 코드들을 정리했습니다. Retrofit2 인터페이스 @GET(API.SEARCH_WEATHER) fun search_weather2( @Query("q") location : String, @Query("lang") lang : String) : Single @GET(API.SEARCH_WEATHER) suspend fun search_weather( @Query("q") location : String, @Query("lang") lang : String) : ApiResponse @GET(API.SEARCH_WEATHER) fun search_weather3( @Query("q") location : String, @Query("lang")..
👋Android의 모든 것 : 1️⃣ViewBinding | DataBinding https://goni95.tistory.com/173 👋Android에 모든 것 개념 목 차 👋Android에 모든 것 : 1️⃣Android, 2️⃣Android SDK, 3️⃣Platform Architecture 👋Android에 모든 것 개념 : 1️⃣App Manifest, 2️⃣Android Context, 3️⃣App Components 👋Android에.. goni95.tistory.com 기존에 XML 레이아웃 파일의 View에 접근하기 위해선 findViewById를 사용하는 방법이 View의 개수만큼 findViewById를 사용해야하며 잘못된 View ID로 인한 NPE가 발생할 위험이 있었습니다. 코틀린에서는 코틀린 익스텐션으로 문제가 해결되었지만 2021년 지원 중단이 되었습니..
RecyclerView) BaseAdapter, BaseViewMdoel, BaseModel, DiffUtil : 공통 어답터와 뷰홀더를 이용해 리사이클러뷰 사용하기 지금까지 제가 리사이클러뷰를 사용할 때의 Work Flow는 아래와 같았습니다.리사이클러뷰에 표시될 아이템뷰를 데이터 리스트로부터 생성하는 역할을 담당합니다. 1. Activity 또는 Fragment에 RecyclerView를 추가 2. RecyclerView.Adapter를 상속받아 데이터 목록을 Item 단위의 VIew로 구성하여 화면에 표시하기 위한 Apdater를 구현 3. RecyclerView.ViewHolder를 상속받아 개별 데이터에 대응하는 ViewHolder를 구현 4. setAdapter()와 setLayoutManager()를 이용해, Adapter, LayoutManager를 지정 위와 같이 사용해오다, RecyclerView의 Anti Pettern에 대한 글을 보고 여러 번 ..
BottomNavigationView를 이용한 Fragment 전환 BottomNavigationView를 이용해 MainActivity에서 Fragment를 전환하며 출력하도록 작성했습니다. 1. UI 디자인 BottomNavigationView에서 Item을 클릭하게되면, FragmentContainerView에 해당 Fragment가 표시될 수 있도록 아래와 같이 작성해줍니다. 2. Fragment 생성 companion object를 통해 Fragment를 싱글톤으로 생성하고, FragmentManager에서 Fragment를 찾을 때 해당 TAG 상수를 통해 찾기위해서 생성했습니다. class MyFragment : BaseFragment() { override val viewModel: MyViewModel by viewModel() override fun g..
TabLayout + ViewPager2를 이용한 화면 구성 TabLayout과 ViewPager2를 이용해 화면을 구성하는 방법을 알아봤습니다. 1. enum Class 생성 string 값을 가진 상수를 선언했습니다. TodoCategory의 상수들로 무언가를 비교하겠지만, 화면에 출력시킬 땐 categoryNameId를 통해 string 값을 가져올 겁니다. enum class TodoCategory( @StringRes val categoryNameId: Int ) { ALL(R.string.all), ANDROID(R.string.android), LANGUAGE(R.string.language), DB(R.string.db), OTHER(R.string.other); } 2. Fragment 생성 todoCategory 프로퍼티를 사용하지 않고 Frag..
DI (Koin)을 이용한 의존성 주입 Koin Koin을 이용한 의존성 주입에 대해 정리해보겠습니다. Koin을 사용해 의존성 주입을 받기위해선, 모듈 선언, 모듈 등록 작업이 필요합니다. 1. Koin 빌드 종속 항목을 추가 App 수준의 build.gradle 파일의 dependencies 블록에 아래와 같이 추가합니다. def koin_version = "2.1.5" // Android/Kotlin 애플리케이션을 작성하고 Koin을 사용해 구성 요소를 주입하고 검색 implementation "org.koin:koin-android:$koin_version" // 코인 안드로이드 스코프 기능 implementation "org.koin:koin-android-scope:$koin_version" // koin을 사용하여 ViewMode..
Android Studio : 유용한 단축키 설명 단축키 단위 선택 컨트롤 + W 코드 정렬 컨트롤 + 알트 + L 부분적 다중 선택 알트 + 시프트 다중 선택 알트 + 마우스 드래그 아래의 동일 키워드 선택 알트 + J 해당 라인 코드 위치 옮기기 알트 + 시프트 + 위, 아래 방향키 해당 메서드 단위 위치 옮기기 컨트롤 + 시프트 + 위, 아래 방향키 메서드 단위로 커서 이동 알트 + 위, 아래 방향키 메서드 선언 위치로 이동 컨트롤 + B 인터페이스 구현부 이동 컨트롤 + 시프트 + B 동일하게 연결된 변수명 변경 시프트 + F6 프로젝트 내 클래스/파일 등 찾기 시프트 * 2 전체 파일에서 코드 찾기 컨트롤 + 시프트 + F 해당 라인을 복제하여 생성 컨트롤 + D Implement methods 구현 컨트롤 + I Override meth..