728x90
반응형

2025/02 48

16. SearchActivity '현 위치' item 추가, MainActivity 카메라 갱신

SearchActivity에 현 위치 정보에 대한 아이템을 추가MainActivity가 재사용될 때 맵 카메라도 위치정보에 맞게 갱신SearchActivityaddCurLoccationKey(): 현 위치(키값) 정보를 리스트에 추가override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_search) ... cityList = CityDataProvider.cityList addCurLocationKey() ...}private fun addCurLocationKey(){ this.lifecycleScope...

15. 액티비티 재사용 추가(검색 >> 메인)

검색 액티비티에서 도시 카드아이템 클릭하면 해당 도시에 대한 날씨 정보를 표시하려고 한다 CityWeatherAdapter어댑터에 아이템 클릭 이벤트 등록class CityWeatherAdapter (private var cityList: List, private val onItemClick: (CityWeatherInfo) -> Unit) : //클릭 이벤트 전달 RecyclerView.Adapter() { inner class CityViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { ... init { itemView.setOnClick..

13. 날씨 데이터 리스트화

여러 도시의 날씨 정보 표시를 위해 날씨 데이터를 리스트화했다 WeatherRepository날씨 API 응답을 리스트화class WeatherRepository { private val _nowcastDataMap = mutableMapOf>() // 다중 실황 데이터 val nowcastDataMap: Map> get() = _nowcastDataMap private val _forecastDataMap = mutableMapOf>() // 다중 예보 데이터 val forecastDataMap: Map> get() = _forecastDataMap suspend fun fetchNowcastData(serviceKey: String, cityKey: String, nx: I..

14. 옵저버 오남용 수정

이전까지의 코드에서 API 호출된 응답(Response)에 옵저버를 붙여서 날씨 데이터를 업데이트했고 날씨 데이터에 옵저버를 붙여서 UI 업데이트가 되도록 만들었다. LiveData(날씨 Response)를 다른 LiveData(날씨 Data)가 관찰하고, LiveData(날씨 Data) 를 UI 업데이트를 위해 관찰하는 구조에서 오류가 많았다이 부분을 끊고자 많은 부분을 학습하고 수정했다요점은 아래와 같다API 호출에 대한 응답은 옵저버를 붙이지 않는다날씨 데이터값을 LiveData로써 업데이트는 유지액티비티에서 날씨 데이터에 옵저버를 붙이도록 한다변경된 주요 클래스 RepositoryAPI 응답값을 LiveData로 캐싱하던 부분을 삭제했다class WeatherRepository { priva..

12. 검색 액티비티에 카드 레이아웃 추가

레이아웃 추가검색 기능을 추가하기 전에 몇 개의 노출시킬 카드 아이템을 만들려고 한다아이템 내용은 임시로 하드코딩하려고 한다 아이템 레이아웃 생성 (item_city_card.xml)  아이템을 담을 리사이클러뷰 추가 (activity_main.xml) 데이터 클래스 생성 (CityWeatherInfo)package com.example.weatherapp.ui.modeldata class CityWeatherInfo ( val cityName: String, // 도시 이름 val weatherIconResId: Int, // 날씨 아이콘 리소스 ID val tempera..

Intent의 개념과 활용

IntentIntent는 Android에서 컴포넌트 간(예: Activity, Service, BroadcastReceiver)의 통신을 담당하는 객체다른 화면으로 이동하거나 데이터를 전달할 때 사용  Explicit Intent (명시적 인텐트)특정 컴포넌트를 직접 지정하여 실행하는 방식예: 같은 앱 내부에서 Activity 간 이동 예제: 명시적 인텐트로 Activity 전환val intent = Intent(this, SecondActivity::class.java)startActivity(intent)SecondActivity로 화면을 전환  예제: 데이터 전달과 함께 Activity 전환val intent = Intent(this, SearchActivity::class.java)intent.p..

11. 도시 검색 버튼 추가

개발항목도시 검색 버튼 추가검색 액티비티로 이동먼저 검색 버튼에 사용할 이미지를 flaticon에서 다운로드하였다 무료 아이콘 및 스티커 - 수백만 종의 다운로드가 가능한 리소스여러분의 프로젝트를 위한 무료 아이콘 및 스티커를 다운로드하세요. 디자이너에 의한, 디자이너를 위한 PNG, SVG, EPS, PSD 및 CSS 형식의 이미지www.flaticon.com버튼 추가 (activity_main.xml)액티비티 추가, 버튼 클릭 시 액티비티 이동 빈 액티비티 추가 (SearchActivity)package com.example.weatherappimport android.os.Bundleimport androidx.appcompat.app.AppCompatActivityclass SearchActivi..

10. 지도 위에 날씨 이미지 표시하기 (카카오맵 라벨 생성)

카카오맵의 라벨 기능을 이용해 맵 위에 현재 날씨 아이콘을 띄우도록 하려고 한다먼저 Map 매니저 클래스에서 UI 담당 클래스를 분리작업을 했다 MapViewMager > MapController 변경Map의 초기화 및 라이프사이클 관리, 카메라 이동 기능만을 담당하도록 코드를 수정하였다package com.example.weatherapp.mapimport .../*** * 맵의 초기화, 라이프사이클 관리, 카메라 이동 */class MapController( private val activity: AppCompatActivity, private val mapView: MapView,) { private var kakaoMap: KakaoMap? = null fun init(onM..

9. 지도 나타내기 (카카오맵 API)

날씨앱에 지도를 나타내고 그 위에 날씨를 표현할 수 있도록 구상을 수정했다카카오맵 API 발급https://apis.map.kakao.com/android_v2/ 추가된 애플리케이션을 누르면 대시보드로 진입할 수 있다.앱 키 카테고리에 가면 API 키 확인이 가능하다 카카오맵 API 활성화안드로이드 플랫폼 등록 앱에 등록된 패키지 명(AndroidManifest.xml) 확인 플랫폼 등록 올바른 패키지명과 해시 키 값을 입력해야 한다 해시 키 확인하기 Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com 캐 해시 값은 로그를 찍어서 확인할 수 있다Log...

26. 디버깅(Debugging)과 Profiler 활용

앱 디버그  |  Android Studio  |  Android DevelopersAndroid 스튜디오의 기본적인 디버거 작업을 안내합니다.developer.android.com 디버깅디버깅이랑 코드의 문제를 찾고 수정하는 과정대표적인 디버깅 도구는 Logcat, Breakpoint, Debugger, Exception 처리 등이 있다.LogcatLogcat은 Android 시스템과 앱의 로그를 실시간으로 출력하는 콘솔로그를 활용하면 앱의 실행 상태와 오류를 쉽게 추적할 수 있다 로그 레벨레벨의미Verbose상세한 로그 출력 (디버깅 용도)Debug개발자가 디버깅하는 데 필요한 정보 출력Info일반적인 실행 정보 출력Warn경고 메세지 출력Error치명적인 오류 메시지 출력Assert개발자가 정의한 ..

728x90
반응형