2016-11-26 4 views
1

誰もが! 私はいくつか問題があります。私はRxJava/RxKotlin/RxAndroidの初心者ですが、いくつかの機能を理解していません。例:RxAndroidを使用してKotlin言語で観測可能なものをいくつかジップする方法

import rus.pifpaf.client.data.catalog.models.Category 
import rus.pifpaf.client.data.main.MainRepository 
import rus.pifpaf.client.data.main.models.FrontDataModel 
import rus.pifpaf.client.data.product.models.Product 
import rx.Observable 
import rx.Single 
import rx.lang.kotlin.observable 
import java.util.* 


class MainInteractor { 

    private var repository: MainRepository = MainRepository() 

    fun getFrontData() { 

     val cats = getCategories() 
     val day = getDayProduct() 
     val top = getTopProducts() 

     return Observable.zip(cats, day, top, MainInteractor::convert) 
    } 

    private fun getTopProducts(): Observable<List<Product>> { 
     return repository.getTop() 
       .toObservable() 
       .onErrorReturn{throwable -> ArrayList() } 

    } 

    private fun getDayProduct(): Observable<Product> { 
     return repository.getSingleProduct() 
       .toObservable() 
       .onErrorReturn{throwable -> Product()} 

    } 

    private fun getCategories(): Observable<List<Category>> { 
     return repository.getCategories() 
       .toObservable() 
       .onErrorReturn{throwable -> ArrayList() } 
    } 

    private fun convert(cats: List<Category>, product: Product, top: List<Product>): FrontDataModel { 

    } 
} 

その後、私が使用がMainInteractor :: Androidのスタジオが

enter image description here

次の私はバリアントの多くを試み、それが欲しいんか理解しようとした私に教えて変換するんです、成功はない。私を助けてください...最高の挨拶。

答えて

8

ただ、ラムダと関数参照置き換える:

return Observable.zip(cats, day, top, { c, d, t -> convert(c, d, t) }) 

を、明示的に関数の戻り値の型を宣言することを忘れないでください:

fun getFrontData(): Observable<FrontDataModel> { 
    ... 
関連する問題