retrofit2 + okhttp3 + rxjava networkerror convert to class Retrofit/Okhttp3 네트워크 통신중 에러 발생시 json형식으로 메세지를 보내는 경우가 있다. 에러에 따라 사용자에게 보여지는 메세지가 달라져야하는데 이를 클라이언트단에서 처리하게 되면 error code로 분기하여 다른 메세지를 띄워줘야 하기 때문에 비효율적이고 코드가 상당히 지저분해진다. 이때문에 서버에서 에러 상황에 따라 error code와 json형식으로 메세지를 보내는 경우가 생기는데 이 때 errorbody를 json형태로 변환하여 사용 할 필요 없이 retrofit.responseBodyConverter객체로 변환하여 사용하면 간편하다. json을 파싱 할 모델객체를 만들어주..
Android read assets jsonFile changing order 안드로이드에서 프로젝트 assets폴더 내의 .jsonFile을 불러오면 정렬 순서가 뒤죽박죽 일 때가 있다. 감싸주는 jsonObject없이 여러 jsonObject들이 나열되어 있을 경우 이러한 현상이 발생한다. 예를 들면, { "강원도": { "강릉시": 1, "고성군": 1 }, "경기도": { "가평군": 1, "과천시": 1 } }이러한 상황에서 jsonObject의 키값들을 가져오면 순차적으로 가져오지 못한다. { "locations": { "강원도": { "강릉시": 1, "고성군": 1 }, "경기도": { "가평군": 1, "과천시": 1 } } } 이런식으로 감싸주는 jsonObject를 하나 만들어 준 뒤..
Android retrofit2 + okhttp3 + rxjava(android) network sample 요즘 핫한 retrofit2 + okhttp3 + rxjava(android) 조합으로 간단하게 github유저 정보 읽어오는 샘플 만들어 봤습니다. 샘플소스는 github에서 받으실 수 있습니다. https://github.com/PM-10/NetworkSample 자세한 코드리뷰는 추후 업데이트 하도록 하겠습니다.
Android change statusbar color statusbar색상변경은 xml상으로 theme를 이용하여 변경가능하지만 java코드로도 변경가능하다.롤리팝이상에서 가능하다. public static void setStatusBarColor(Activity activity, int color) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = activity.getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.clearFlags(WindowManager.LayoutParams.FLA..
안드로이드 텍스트뷰 텍스트에 속성주기 안드로이드에서 TextView에 setText시 text에 부분적으로 밑줄을 긋거나 색상을 바꾸거나 이미지를 중간에 삽입하거나 등이 필요 시 Html을 이용하여 사용 가능하지만 SpannableString 클래스로도 사용 가능하다. SpannableString spannableString = new SpannableString(text);spannableString.setSpan(new ForegroundColorSpan(color), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);spannableString.setSpan(new UnderlineSpan(), targetStartIndex, targetEndI..
# android textview html (underline, color) 부분스타일 바꾸기 안드로이드 개발을 하다보면 textview에 setText해줄 때 특정문장만 색상을 변경하거나 밑줄표시를 해줘야 할 때가 있다. android에서 html클래스를 지원해주기 때문에 html문법을 이용하면 된다.String text = "안녕하세요"; textView.setText(Html.fromHtml("" + text + ""));underLine textView.setText(Html.fromHtml("" + text + " "));color textView.setText(Html.fromHtml("테스트 " + "파란색" + "입니다 "));underLine + color
viewpager와 fragment를 사용하다보면 fragment를 가져와야하는 상황이 생기기 때문에 ((MyFragment)fragmentManager.getFragments().get(index)).이런 식으로 사용해왔으나. 가끔 casting에러가 발생하는것을 보고 fragment manager의 스택(index)이 가변적이라는 사실을 알게되었다. 오류가 발생 할 수도 있다는 말이다. 해결하기 위해 for(Fragment fragment : fragmentManager.getFragments()){ if(fragment instanceof MyFragment){ // } } 이런식으로 사용했으나.. 뭔가 굉장히 지저분하고 불필요한 반복문은 좋아하지 않기 때문에 다른방법을 찾았다. fragmentMa..
안드로이드 이미지로드 library인 Glide를 사용하다보면 java.lang.RuntimeException: java.lang.IllegalArgumentException: You cannot start a load for a destroyed activity라는 에러친구를 만날 수 있다. Glide.with(MainActivity.this)Glide는 이와같이 이미지로드시 파라미터로 Activity를 받게 되어있는데 비동기방식으로 이미지로드 함수가 실행되고 액티비티가 바로 종료되면 파라미터로 넘겨준 Activity가 이미 destory된 상태이기때문에 발생하는 에러이다 해결방법은 이렇다. Activity activity = MainActivity.this; if (activity.isFinishin..