분류 전체보기 (64) 썸네일형 리스트형 [안드로이드 기본] 스크롤뷰 사용방법 스크롤뷰는 한 화면에 많은 뷰들을 보여줄 때 스크롤을 할 수 있게 해주는 뷰이다. 스크롤뷰의 특성으로는 하나의 뷰를 감쌀 수 있다는 것이다. 먼저 스크롤뷰의 간단한 예제로, 세가지의 텍스트뷰를 스크롤뷰 안에 넣어 보자. 하나의 뷰를 감쌀 수 있기 때문에 LinearLayout으로 세가지의 텍스트뷰를 감싸고 넣을 것이다. [activity_main.xml] 하나의 뷰(LinearLayout)는 스크롤뷰에 감싸지고, 화면에서 벗어난 뷰들을 스크롤을 통해서 하단으로 또는 상단으로 이동할 수 있게된다. 다음은 화면 하단부만 스크롤 할 수 있게 하고, 상단에 버튼을 고정시키는 코드이다. [activity_main.xml] 상위 LinearLayout에 버튼을 감싸고, 그 밑에 스크롤뷰로 묶었다. 그 스크롤뷰는 텍.. [RxJava] Subject 클래스 - AsyncSubject 클래스 Subject 클래스는 차가운 Observable을 뜨거운 Observable로 바꿔준다고 소개했다. Subject 클래스의 특성은 Observable의 속성과 구독자의 속성이 모두 있다는 점이다. 즉, Observable처럼 데이터를 발행할 수 있고, 구독자처럼 발행된 데이터를 바로 처리할 수도 있다. RxJava에서 제공하는 주요 Subject 클래스에는 AsyncSubject, BehaviorSubject, PublishSubject, ReplaySubject 등이 있다. AsyncSubject 클래스 AsysncSubject 클래스는 Observable에서 발행한 마지막 데이터를 얻어 올 수 있는 Subject 클래스이다. 완료되기 마지막 데이터 데이터에만 관심이 있으며, 이전 데이터들은 무시된다.. [RxJava] 뜨거운 Observable Observable에는 뜨거운 Observable(Hot Observable)과 차가운 Observable(Cold Observable)이 있다. 비유를 하자면, 차가운 Observable은 마치 냉장고에 있는 냉동식품과 같다. Observable을 선언하고 just(), fromIterable() 등 함수를 호출해도 옵서버가 subscribe() 함수를 호출하여 구독하지 않으면, 데이터를 발행하지 않는다. 다른 말로, 게으른(lazy) 접근법이다. 반면 뜨거운 Observable은 구독자가 존재 여부와 관계없이 데이터를 발행하는 Observable이다. 따라서 여러 구독자를 고려할 수 있다. 단, 구독자로서는 Observable에서 발행하는 데이터를 처음부터 모두 수신할 것을 보장할 수는 없다. 즉, .. [RxJava] Maybe 클래스 Maybe 클래스는 RxJava2에 처음 도입된 Observable의 또다른 특수 형태이다. Single 클래스와 마찬가지로, 최대 데이터 하나를 가질 수 있지만, 데이터 발행 없이 바로 데이터 발생을 완료할 수도 있다. 즉, (Single 클래스는 1개 완료, Maybe 클래스는 0 또는 1개 완료) Maybe 클래스는 Single 클래스에 onComplete 이벤트가 추가된 형태라고 생각하면 편할것이다. Maybe 객체는 Maybe 클래스를 이용하여 생성할 수 있지만 보통은 Observable의 특정 연산자를 통해서 생성할 때가 많다. 그리고, Maybe 객체를 생성할 수 있는 리액티브 연산자에는 elementAt(), firstElement(), flatMapMaybe(), lastElement().. [RxJava] Single - just() 함수와 Observable에서 Single 클래스를 사용하는 다양한 방법 just()함수 사용 Single 클래스는 Observable 클래스와 거의 같은 방법으로 활용이 가능하다. 아래 코드는 just() 함수를 활용해 Single 객체를 생성하는 코드이다. private void single(){ Single source = Single.just("Hello Single"); source.subscribe(System.out::println); } 결과값 Hello Single Observable에서 Single 클래스 사용 Single은 Observable의 특수한 형태이므로, Observable에서 변환할 수있다. 아래 코드는 Observable에서 Single 클래스를 사용하는 다양하는 방법이다. private void fromObservable(){ //1. 기존 .. [RxJava] Single 클래스 Single 클래스는 RxJava 1.x부터 존재하는 Observable의 특수한 형태이다. Observable 클래스는 데이터를 무한하게 발행할 수 있지만 Single 클래스는 오직 1개의 데이터만 발행이 가능하다. 보통 결과가 유일한 서버 API를 호출할 때 유용하게 사용할 수 있다. Single 클래스의 마블 다어그램은 아래와 같다. 여기서 제일 중요한 점은 데이터 하나가 발행과 동시에 종료(onSuccess)된다는 점이다. 라이프 사이클 관점에서 보면, onNext()와 onComplete() 함수가 onSuccess()로 통합되었다고 보면된다. 따라서 Single 클래스의 라이프 사이클 함수는 onSuccess(T value) 함수와 onError() 함수로 구성되어 있다. [RxJava] Observable - fromPublisher() 함수 Publisher는 자바 9의 표준인 Flow API의 일부이다. 먼저, fromPublisher() 함수를 통해서 Observable을 만드는 방법이다. private void basic(){ Publisher publisher = (Subscriber [RxJava] Observable - fromFuture() 함수 Future 인터페이스 역시 자바 5에서 추가된 동시성 API로 비동기 계산의 결과를 구할 때 사용한다. 보통 Executor 인터페이스를 구현한 클래스에 Callable 객체를 인자로 넣어 Future 객체를 반환한다. 그리고 get() 메소드를 호출하면 Callable 객체에서 구현한 계산 결과가 나올때가지 기다리게 된다.(블로킹) 먼저 Future 객체에서 fromFuture() 함수를 사용해 Observable를 생성하는 방법이다. private void basic(){ Future future = Executors.newSingleThreadExecutor().submit(() -> { Thread.sleep(1000); return "Hello Future"; }); Observable sou.. 이전 1 2 3 4 5 6 7 8 다음