你会如何遍历retrolambda中的列表?

时间:2016-10-29 16:54:47

标签: java android 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一起使用? 我需要遍历列表结果我回来并添加一个视图。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:4)

我建议使用streamsupport作为Java 8流部分的附加库:

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文档here