我对Rx编程非常陌生,但我正在尝试在项目中使用它。我的目标是拥有一个GamesInfoList对象,如下所示:
@AutoValue
public abstract class GameInfoList {
public static TypeAdapter<GameInfoList> typeAdapter(Gson gson) {
return new AutoValue_GameInfoList.GsonTypeAdapter(gson);
}
public static Builder builder() {
return new AutoValue_GameInfoList.Builder();
}
public abstract long id();
@Nullable
public abstract String date_added();
@Nullable
public abstract String date_last_updated();
@Nullable
public abstract GameImages image();
@Nullable
public abstract String name();
@Nullable
public abstract List<GamePlatformInfo> platforms();
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder id(long id);
public abstract Builder date_added(String date_added);
public abstract Builder date_last_updated(String date_last_updated);
public abstract Builder image(GameImages image);
public abstract Builder name(String name);
public abstract Builder platforms(List<GamePlatformInfo> platforms);
public abstract GameInfoList build();
}
}
现在,我想按照日期和名称加载我的游戏,并编写了一个方法来访问上述对象。
public void loadGamesByDateAndName(String date, String name) {
Timber.d("Load games by date: " + date + " and name: " + name);
remoteDataHelper
.getGamesListByDate(date)
.flatMapObservable(Observable::fromIterable)
.filter(game -> game.platforms() != null)
.filter(game -> game.platforms().name().contains(name))
.toList()
.subscribe(getObserverFiltered(name, false));
}
在这里,我正在使用filter()运算符过滤基于此方法中输入的名称的平台对象。上述方法显示错误,因为平台是列表类型。我该如何通过列表进行过滤以匹配名称并在我的Android应用程序中显示?为了按日期和名称加载数据,需要对上述方法进行哪些更改?