Можно ли использовать SingleLiveEvent с Room в Android? - PullRequest
0 голосов
/ 06 июля 2018

Я возился с SingleLiveEvent. Можно ли использовать его с базой данных комнат? Я попытался использовать его и получил ошибку сборки, говорящую Not sure how to convert a Cursor to this method's return type. Есть ли обходные пути здесь? У меня есть крайний случай, где я хотел бы использовать его!

1 Ответ

0 голосов
/ 06 июля 2018

SingleLiveEvent равно MutableLiveData, что LiveData. Вы можете вернуть List<LiveData<YourData>> из комнаты с запросом выбора, который вызывается в рабочем потоке. Нет необходимости работать с курсорами в комнате. получить List<LiveData<YourData>> и по методу наблюдения отправить List<YourData> в требуемый класс или RecyclerView. Каков ваш крайний случай необходимости курсора?

Внимание! Настоятельно не рекомендуется работать с API-интерфейсом Cursor, поскольку это не гарантирует, существуют ли строки или какие значения строк содержат. Используйте эту функцию, только если у вас уже есть код, который ожидает курсор, и вы не можете легко изменить рефакторинг.

Однако вы можете получить его с помощью

@Dao
public interface MyDao {
    @Query("SELECT * FROM user WHERE age > :minAge LIMIT 5")
    public Cursor loadRawUsersOlderThan(int minAge);
}

Источник

...