3

次のコードがあります

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);
});

この同じコードをレトロラムダで動作させる方法はありますか? リストの結果を繰り返し処理して、ビューに追加する必要があります。

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

4

1 に答える 1

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 拡張機能 (特に Optional および Collectors) と最適化も既に提供されているという点で、特に魅力的です。API ドキュメントはこちらにあります

于 2016-11-03T21:02:12.827 に答える