목록전체 글 (44)
개발자이야기
AAC(Android Architecture Components) 우선 글을 시작하기에 앞서 AAC ViewModel은 mvvm의 vm을 말하는것은 아닙니다. AAC ViewModel 없이도 충분히 mvvm 디자인패턴 설계를 할 수 있습니다. AAC의 ViewModel은 프래그먼트 간의 데이터 공유, 수명주기 관리를 편하게 해주는 라이브러리 입니다. 자세한 내용은 https://developer.android.com/topic/libraries/architecture/viewmodel?hl=ko 해당 글은 LiveData에 대한 설명을 할 것이지만 ViewModel도 같이 사용하였기에 위의 글 남깁니다. AAC 에는 아래와 같은 구성요소가 있다. LiveData, ViewModel, LifeCycles,..
@Provides 와 @Binds 어노테이션의 차이 @Provides 우선 @Provides 어노테이션을 확인해 보자 @Module abstract class CarModule2 { @Provides fun provideEngine(): Engine { return LPG() } } provideEngine 이라는 함수명을 갖고 있고 (함수명은 마음대로) 리턴 타입은 Engine 이며 return LPG 객체를 생성하여 반환하게 되어있다. 여기서 Engine 은 interface 이다 class LPG : Engine { override fun engine(): String { return "LPG엔진" } } LPG 객체는 위와같은 클래스로 되어있다. 단순 Engine interface를 구현한 구현체..
해당 글은 kotlin을 기반으로 작성 되었습니다. 의존성 주입(DI)이란 무엇일까? 간단하게 객체를 외부에서 생성하여 넘겨주는 것을 말한다. class Car { var engine: Diesel = Diesel() var tier: SnowTier = SnowTier() fun engineStart() { engine.start() } } 위의 코드를 보자 Car 클래스에 Diesel 엔진과 SnowTier 라는 타이어가 있다. 뭐 대충 이래도 자동차에 엔진과 타이어가 달렸으니 문제는 없겠지만 이와같이 작성한다면 Car 클래스에 Diesel 클래스 와 SnowTier 클래스 객체에 대한 의존성이 생긴 것 이다. 그냥 이렇게 써도 된다. 문제는 없다. 실제 자동차 였다면 디젤 엔진을 달고 스노우 타이어..
Diffutil ItemCallback 먼저 간단히 살펴보도록 하자 간단한 androidx.appcompat.widget.AppCompatRadioButton 클릭에 대한 예제로 작성되었습니다. areItemsTheSame(T oldItem, T newItem) 두 개체가 동일한 항목을 나타내는 지 확인하기 위해 호출됩니다. 아이템의 고유한 키값을 사용하여 비교합니다. areContentsTheSame(T oldItem, T newItem) 두 항목에 동일한 데이터가 있는지 확인하기 위해 호출됩니다 areItemsTheSame() 해당 함수가 true 일때만 호출된다. (areItemsTheSame() 함수에서 사용한 key값은 같은 아이템이지만 안의 내용물이 달라졌는지 확인) 간단한 recyclervi..
public static void main(String[] args) { long[] room = {1,2,3,4,5}; int find = 4; //내가 찾을값 int pivot = 0; int left = 0; int right = room.length-1; while (room[pivot] != find) { pivot = (left+right) / 2; if(find > room[pivot]) { left = pivot+1; } else if(find < room[pivot]) { right = pivot-1; } else { //같은경우 System.out.println(room[pivot]); } } }
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 public static long[] solution(long k, long[] room_number) { long[] answer = new long[room_number.length]; long index = 0; for(long item : room_number) { long d = recu(item); answer[Math.toIntExact(index)] = d; index = index+..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 interface RetroApi { @GET("test") fun getTest() : Call} fun getInstnace() : Retrofit { if(instance == null){ instance = Retrofit.Builder() .baseUrl("http://www.naver.com/cafe/id") .addConverterFactory(GsonConverterFactory.create()) .build() } return instance!!} 만들어지는 url ..
안드로이드 Sqlite 예제