在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ GroupBy
combineLatest
從列表創(chuàng)建一個(gè)Observable
RxJava的與眾不同之處
Schedulers
RxJava觀察者模式工具包
總結(jié)
工具
你什么時(shí)候使用觀察者模式?
GroupBy
App架構(gòu)
組合Observables
創(chuàng)建Activity類
StartWith
RX - 從.NET到RxJava
處理耗時(shí)的任務(wù)
過濾Observables
向響應(yīng)式世界問好
避免阻塞I/O的操作
Join
有且僅有一次
Schedulers-解決Android主線程問題
轉(zhuǎn)換Observables
啟動(dòng)引擎
我們的第一個(gè)Observable
總結(jié)
StrictMode
Debounce
*map家族
創(chuàng)建RecyclerView Adapter
為什么是Observables?
Merge
再多幾個(gè)例子
總結(jié)
Buffer
Window
總結(jié)
Timeout
執(zhí)行網(wǎng)絡(luò)任務(wù)
項(xiàng)目目標(biāo)
來到Java世界 - Netflix RxJava
獲取我們需要的數(shù)據(jù)
Observable
過濾序列
非阻塞I/O操作
ZIP
總結(jié)
And,Then和When
觀察者模式
Retrofit
Cast
Skip and SkipLast
微軟響應(yīng)式擴(kuò)展
與REST無縫結(jié)合-RxJava和Retrofit
First and last
RxJava Essentials 中文翻譯版
Switch
ElementAt
總結(jié)
總結(jié)
總結(jié)
Sampling
SubscribeOn and ObserveOn
Subject = Observable + Observer

GroupBy

拿第一個(gè)例子開始,我們安裝的應(yīng)用程序列表按照字母表的順序排序。然而,如果現(xiàn)在我們想按照最近更新日期來排序我們的App時(shí)該怎么辦?RxJava提供了一個(gè)有用的函數(shù)從列表中按照指定的規(guī)則:groupBy()來分組元素。下圖中的例子展示了groupBy()如何將發(fā)射的值根據(jù)他們的形狀來進(jìn)行分組。

http://wiki.jikexueyuan.com/project/rxjava/images/chapter5_8.png" alt="" />

這個(gè)函數(shù)將源Observable變換成一個(gè)發(fā)射Observables的新的Observable。它們中的每一個(gè)新的Observable都發(fā)射一組指定的數(shù)據(jù)。

為了創(chuàng)建一個(gè)分組了的已安裝應(yīng)用列表,我們?cè)?code>loadList()函數(shù)中引入了一個(gè)新的元素:

Observable<GroupedObservable<String,AppInfo>> groupedItems = Observable.from(apps)
    .groupBy(new Func1<AppInfo,String>(){
        @Override
        public String call(AppInfo appInfo){
            SimpleDateFormat formatter = new SimpleDateFormat("MM/yyyy");
            return formatter.format(new Date(appInfo.getLastUpdateTime()));
        }
    });

現(xiàn)在我們創(chuàng)建了一個(gè)新的Observable,groupedItems,它將會(huì)發(fā)射一個(gè)帶有GroupedObservable的序列。GroupedObservable是一個(gè)特殊的Observable,它源自一個(gè)分組的key。在這個(gè)例子中,key就是String,代表的意思是Month/Year格式化的最近更新日期。

這一點(diǎn),我們已經(jīng)創(chuàng)建了幾個(gè)發(fā)射AppInfo數(shù)據(jù)的Observable,用來填充我們的列表。我們想保留字母排序和分組排序。我們將創(chuàng)建一個(gè)新的Observable將所有的聯(lián)系起來,像往常一樣然后訂閱它:

Observable.concat(groupedItems)
    .subscribe(new Observer<AppInfo>() {

        @Override
        public void onCompleted() {
            mSwipeRefreshLayout.setRefreshing(false);
        }

        @Override
        public void onError(Throwable e) {
            Toast.makeText(getActivity(), "Something went wrong!", Toast.LENGTH_SHORT).show();
            mSwipeRefreshLayout.setRefreshing(false);
        }

        @Override
        public void onNext(AppInfo appInfo) {
            mAddedApps.add(appInfo); 
            mAdapter.addApplication(mAddedApps.size() - 1,appInfo);
        }
    });

我們的loadList()函數(shù)完成了,結(jié)果是:

http://wiki.jikexueyuan.com/project/rxjava/images/chapter5_9.png" alt="" />