我對Rx編程非常陌生,我在項目中嘗試瞭解它。我要的是我有如下GamesInfoList的對象:RxJava2:在Observable中過濾列表<Object>
@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));
}
在這裏,我過濾(使用濾波器()算子)的對象的平臺根據此方法所輸入的名稱。上面的方法顯示我錯誤,因爲平臺類型爲List。如何通過列表篩選匹配名稱並顯示在我的Android應用程序中?爲了按日期和名稱加載數據,需要對上述方法進行哪些更改?
我想這應該工作得很好,因此,我會接受這個答案。將測試一次。非常感謝!!! :-) –
有時最簡單的解決方案是最好的。也許你可以建立更多的RXy和聰明的東西,但最終它會更難以理解下一個讀取它的人。或者一個月後給你;) – theFunkyEngineer
是的,我想是的。操作員很難記住。需要在我所預計的很多項目中使用它們。 –