Работаю с Room
есть вот такой метод
@Query("SELECT * FROM mytable WHERE pnr = :iPnr")
abstract Maybe<UserPnrDbObject> getBy(String iPnr);
и есть вот такой метод
public Maybe<UserActivePnr> getMaybeBy(String iPnr)
{
return getBy(iPnr)//
.flatMap(new Function<UserPnrDbObject, MaybeSource<UserPnrDbObject>>()
{
@Override
public MaybeSource<UserPnrDbObject> apply(final UserPnrDbObject iUserPnrDbObject) throws Exception
{
return concatInfoToUser(iUserPnrDbObject);
}
})//
.map(new Function<UserPnrDbObject, UserActivePnr>()
{
@Override
public UserActivePnr apply(final UserPnrDbObject iUserPnrDbObject) throws Exception
{
return PnrMapper.fromDb(iUserPnrDbObject);
}
})//
.flatMap(new Function<UserActivePnr, MaybeSource<UserActivePnr>>()
{
@Override
public MaybeSource<UserActivePnr> apply(final UserActivePnr iPnr) throws Exception
{
return Maybe.just(iPnr);
}
});
}
что тут должно происходить: нужно получить обьект с БД добавить к нему дополнительную информацию (метод Maybe<UserPnrDbObject> concatInfoToUser(UserPnrDbObject iObj)
) и потом конвертировать это все из UserPnrDbObject
в UserActivePnr
и обернуть в Maybe
чтоб получить в итоге Maybe<UserActivePnr>
вот и все
Вопрос вот в чем, метод который я описал выше выполняет все эти действия и вроде бы все хорошо работает(может конечно можно как то лучше это описать?) , но если я удаляю последнюю обертку с этого метода, чтоб получилось вот так
public Maybe<UserActivePnr> getMaybeBy(String iPnr)
{
return getBy(iPnr)//
.flatMap(new Function<UserPnrDbObject, MaybeSource<UserPnrDbObject>>()
{
@Override
public MaybeSource<UserPnrDbObject> apply(final UserPnrDbObject iUserPnrDbObject) throws Exception
{
return concatInfoToUser(iUserPnrDbObject);
}
})//
.map(new Function<UserPnrDbObject, UserActivePnr>()
{
@Override
public UserActivePnr apply(final UserPnrDbObject iUserPnrDbObject) throws Exception
{
return PnrMapper.fromDb(iUserPnrDbObject);
}
});
}
то тоже все работает...
Как так получается? Мой метод Maybe<UserActivePnr> getMaybeBy(String iPnr)
возвращает Maybe
, последний метод map()
который я выполняю в цепочке должен по идее вернуть UserActivePnr
, но он как то возвращает Maybe<UserActivePnr>
Что не так?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я посылаю запрос на сервер, он мне отправляет String[] или String с помощью byte[]Моя задача - преобразовать этот массив байтов хоть в что-нибудь читаемое
Подписываюсь на LiveData которая находится во ViewModel во фрагменте
Хочу, чтобы при нажатии кнопки "UP" аймэдж "gena" стирался и появлялся в новом месте - то есть x = x + 100Но при нажатии кнопки ничего не происходит