본문 바로가기

개발84

카카오 API 이미지 검색 삽질 기록 api로 이미지 검색 결과를 받는데 자꾸 결과에 널이 뜬다.... 이상하다. 뭐가 문제지? 했는데 interface에 반환타입 KakaoImg가 문제였다. KakaoImg클래스와 APIResponse 클래스는 구조는 같다. 다만 KakaoImg 가 APIResponse 를 한번 더 감싼 형태라서 정보를 담아내지 못헀던 것이다. 반환타입을 APIResponse으로 바꾸니 바로 되었다. 아래는 그 당시 코드. interface interface KakaoImageAPI { @GET("v2/search/image") suspend fun getPost( @Header("Authorization") apiKey : String, @Query("query") searchKeyword: String ) : Kaka.. 2024. 1. 30.
[안드로이드/코틀린] 키보드 사라지게 하기 프래그먼트에서 버튼 클릭 시 키보드화면을 사라지게 하는게 목적이였는데 검색해보니 프래그먼트에서는 불가능하다고 한다. 액티비티까지 올라갸아 한다. override fun dispatchTouchEvent(ev: MotionEvent?): Boolean { val imm: InputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(currentFocus?.windowToken, 0) return super.dispatchTouchEvent(ev) } 처음엔 프래그먼트에 리스너를 인터페이스로 만들어서 액티비티까지 연결해줄려 했는데 context 문제 때문에 해.. 2024. 1. 30.
BuildConfig.DEBUG 임포트가 안될 때. 빨간 줄 뜰 때. private fun createOkHttpClient(): OkHttpClient{ val interceptor = HttpLoggingInterceptor() if(BuildConfig.DEBUG){ interceptor.level = HttpLoggingInterceptor.Level.BODY } else { interceptor.level = HttpLoggingInterceptor.Level.NONE } return OkHttpClient.Builder() .connectTimeout(20,TimeUnit.SECONDS) .readTimeout(20,TimeUnit.SECONDS) .writeTimeout(20,TimeUnit.SECONDS) .addNetworkInterceptor(interc.. 2024. 1. 29.
[안드로이드 코틀린] java.net.UnknownServiceException: CLEARTEXT communication to "XXXXXX" not permitted by network security policy java.net.UnknownServiceException: CLEARTEXT communication to apis.data.go.kr not permitted by network security policy api 예제 코드를 복붙하고 실행해보는데 저런 에러가 떴다. 컴파일러에서는 문제없다고 뜨는데 뭐가 문젠가 해서 저 경고를 구글에 검색해보니 https 통신을 강제하기 때문이라고 한다. base url을 보니 http로 되어있었다. 근데 분명 해당 api에는 http로 되어있던데.... https도 지원하는건가? 해당 url을 인터넷 주소창에 입력하면 http, https 둘 다 뜨긴한다. 그래서 baseUrl()에 들어갈 주소에 https로 바꿔적으니 문제없이 돌아갔다. 둘다 지원하기 때문에 되는.. 2024. 1. 26.
TIL : API(Application Programming Interface) 서버에 있는 리소스를 클라이언트가 활용할 수 있도록 만든 인터페이스이다. 예를 들면 로아의 아이스팽을 예로 들 수 있겠다. 효율적으로 아이템을 세팅해주는 웹페이지이다. 하지만 생각해보면 이상하다. 게임 내 서버에 데이터가 저장되어 있을 것이고 게임이라는 클라이언트를 통해 해당 데이터를 불러온다. 이 아이스팽에 나오는 정보들은 게임 안에서만 확인가능한 정보들이다. 어떻게 웹페이지에서 검색하고 볼 수 있는 것일까? 위 질문에 대한 대답이 API 이다. 클라이언트(웹페이지)가 게임 내 서버로부터 데이터를 불러와 가공하여 사용자에게 보여주는 것이다. 물론 그 데이터를 활용하는 것은 전적으로 제작자의 역량에 따라 다를 것이다.... 날씨앱이나 아이스팽의 경우처럼 서버 안에 있는 데이터를 불러와 자유롭게 활용할 수.. 2024. 1. 25.
안드로이드 tabIndicatorColor 바텀네비게이션을 만드는데 하단 메뉴를 클릭하고 활성화하면 선택된 탭이 하얗게 칠해져있다. 난 검은 색 메뉴인데... 그렇다고 메테리얼 테마를 적용안하자니 일일히 다 구현하는 건 너무나도 귀찮다. 이 부분만 없애고 싶을 때는 레이아웃/바텀네비이게이션이 있는 파일이름.xml 안에서 바텀네비게이션 뷰에 tabIndicatorColor 속성을 추가하고 적용하고 싶은 값을 넣어주면 된다. 2024. 1. 24.
(안드로이드 코틀린) 리사이클러 뷰어로 아이템 추가하기 이전 게시글에서 채팅창을 리사이클러뷰와 뷰홀더로 구현해보았다. 채팅도 써봐야할 것 아닌가? 아래 링크는 이전 글이다. https://kks950115.tistory.com/67 class ChatLogAdapter(var chatchatItems:MutableList) : RecyclerView.Adapter() { private var chatItems = chatchatItems //.... override fun getItemViewType(position: Int): Int { return chatItems[position].viewType } fun addItems (list:ChatLog){ // 데이터를 부분적으로 더하는 로직이다. chatItems.add(list) this.notifyIt.. 2024. 1. 23.
안드로이드 코틀린 리사이클러뷰 뷰홀더 사용하기 간단한 채팅창 화면을 구현하기 위해 뷰홀더를 사용했다. 다른 블로그들을 찾아보면 잘 설명해준 것들이 많다. 이 글은 그냥 다양한 예시 중 1 이라고 생각하면 된다. 당근마켓을 참고해서 만들었다. 클론코딩이라고 봐도 무방하다. 우선 xml부터... 왼쪽에 표시되는 상대방 오른쪽에 표시되는 나 채팅이 표시되는 액티비티 클래스 @Parcelize data class ChatDetail( val personName : String, var temper : String, var tradeStatus : String, val productName : String, var productPrice : String, var productPic : Int ) : Parcelable @Parcelize data class .. 2024. 1. 22.
안드로이드 코틀린 : 프래그먼트에서 다이얼로그 확인 버튼 누르면 안닫히게 (다이얼로그 유지하기) 다이얼로그 안에서 유효성 검사를 하려는데 확인 버튼을 누르면 바로 닫힌다. 닫히면 안되는데.... 아래는 검색해서 얻은 답. binding.ivAddContact.setOnClickListener {// val alertDialog : AlertDialog var builder = AlertDialog.Builder(context) builder.setTitle("연락처 추가하기") var view = layoutInflater.inflate(R.layout.dialog_addcontact, null) builder.setView(view) var listener = DialogInterface.OnClickListener { p0, p1 -> //보통이라면 여기에 코드가 있지만 비어놓고 아래에 구현을 .. 2024. 1. 19.