2014-12-08 4 views
9

उच्च स्तरीय समस्या मैं हल करने के लिए FooBar वस्तुओं की एक सूची के लिए Foo वस्तुओं एक प्राप्त किए गए FooContainer (प्रत्यक्ष) में निहित की एक सूची बदलने उपयोग कर रहा है कोशिश कर रहा हूँ का उपयोग RxJava।वस्तु लाने के लिए RxJava का उपयोग करना, एक युक्त सूची को बदलने, और सूची

मेरे (भ्रमित) करने का प्रयास:

fooContainerObservable 
    .map(container -> container.getFooList()) 
    .flatMap(foo -> transformFooToFooBar(foo)) 
    .collect(/* What do I do here? Is collect the correct thing? Should I be using lift? */) 
    .subscribe(fooBarList -> /* Display the list */); 

मेरे भ्रम की स्थिति (या इसके कम से कम एक बिंदु) कदम चपटा सूची वापस एक सूची में जाने के लिए है।

नोट: मैं इसे एंड्रॉइड ऐप में करने का प्रयास कर रहा हूं।

+0

क्या आप समझा सकते हैं कि आप 'संग्रह' का उपयोग करने की योजना क्यों बना रहे हैं? यदि आप किसी सूची में सभी आइटम एकत्र करना चाहते हैं, तो बस 'toList' पर कॉल करें। – zsxwing

+0

@zsxwing क्योंकि ऐसा लगता है कि मैं घटनाओं की धारा से कई वस्तुओं को "संग्रहित" कर रहा था :)। मुझे पता नहीं था कि 'toList' मौजूद था। यदि आप इसका सुझाव देते हैं कि मैं इसे समाधान के रूप में चिह्नित करूंगा! – loeschg

उत्तर

17

toList एक पर्यवेक्षक के सभी आइटम List में एकत्रित कर सकते हैं और इसे छोड़ सकते हैं। toListcollect का उपयोग करके कार्यान्वित किया जा सकता है, लेकिन यह collect से बहुत आसान है। आपके उदाहरण के लिए, यह होगा:

fooContainerObservable 
    .map(container -> container.getFooList()) 
    .flatMap(foo -> transformFooToFooBar(foo)) 
    .toList() 
    .subscribe(fooBarList -> /* Display the list */); 
संबंधित मुद्दे