2016-10-29 8 views
3

I持って、次のコードretrolambdaのリストをどのように反復しますか?

List<Trailer> trailers = response.body().getResults(); 
trailers.stream().forEach(trailer -> { 
    View reviewView = LayoutInflater.from(mContext).inflate(R.layout.trailer_list_item, null); 
    ((TextView) reviewView.findViewById(R.id.movies_trailers_list)).setText(trailer.getName()); 
    LinearLayout linearLayout = (LinearLayout) mView.findViewById(R.id.movie_trailers); 
    linearLayout.addView(reviewView); 
}); 

retrolambdaで動作するように、この同じコードを取得する方法はありますか? 私はリストの結果を反復する必要があります。私は戻ってそれをビューに追加します。

アドバイスをいただければ幸いです。

+0

これを確認してください。http://stackoverflow.com/questions/30235441/use-rxjava-and-retrofit-to-iterate-through-list-and-augment-results-based-on-sub –

+0

助けてくれてありがとう!それ以上見てください –

答えて

4

私は親切にするJava 8のストリーム部分のための追加ライブラリとしてstreamsupportを使用することをお勧めしたい:

import java8.util.stream.StreamSupport; 

StreamSupport.stream(trailers).forEach(trailer -> { 
    View reviewView = LayoutInflater.from(mContext).inflate(R.layout.trailer_list_item, null); 
    ((TextView) reviewView.findViewById(R.id.movies_trailers_list)).setText(trailer.getName()); 
    LinearLayout linearLayout = (LinearLayout) mView.findViewById(R.id.movie_trailers); 
    linearLayout.addView(reviewView); 
}); 

のJava 8ストリームコードに必要な変更は通常、非常に小さいと(ほとんどの場合)メカニックです。

新しいJava 9 StreamメソッドtakeWhile/dropWhileと、その他のすべてのJava 9の拡張機能(特に、オプションおよびコレクタ)と最適化がすでに提供されているという点で、さらに魅力的です。 APIのドキュメントhereをご覧ください。

+0

ありがとう! –

関連する問題