Wpis z mikrobloga

via Wykop Mobilny (Android)
  • 1
W #androiddev Room wg dokumentacji jeśli w Dao metoda z adnotacją @Insert zwraca Long to po dodaniu rekordu do bazy zostanie zwrócone jego id.

Jeśli mam w Repository metodę, która wywołuje insert z Dao i chciałbym żeby ona zwróciła mi do ViewModelu to id, żeby obsłużyć, że się dodało dobrze i coś zrobić to jak mogę to zrobić jeśli insert wołany jest przez RxJave? Próbowałem na różne sposoby, ale już mam ochotę wywalić to przez okno xd Mogę tego nie sprawdzać, ale może się coś więcej nauczę ( ͡° ͜ʖ ͡°)

Takie coś ma w ogóle sens czy się tego nie praktykuje lub w jakiś inny sposób powinienem to sprawdzać?

Insert wywołuje jak w tym przykładzie Medium

#programowanie
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Rubajticos:
Pewnie masz coś takiego:

Observable.fromCalable{database.insertRecord(Record())}
Z tego kodu dostajesz Observable, żeby zarządzać wynikiem wystarczy że dodasz flatMap lub
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@ramzes7891: dzięki, ale chyba nie rozumiem tego albo nie rozwiązuje to mojego problemu bo w miejscu, w którym wskazałeś na kolejną operację na bazie nie mogę zwrócić tego id. Chciałbym żeby było tak, że:

- w ViewModelu wywołuje repo.insert(costam), która zwraca Long.
- w Repository odpala się ten kod z Rx i metoda zwraca otrzymane id do metody, która to wywołała czyli spowrotem do ViewModel. Można coś takiego w ogóle
  • Odpowiedz
@Rubajticos:
W RxJava robisz łańcuchy wywołań.
Więc wydaje mi się, że u Ciebie powinno wyglądać to mniej więcej tak o ile dobrze rozumiem zamysł :)

repo.insert(object)
.flatMap {
  • Odpowiedz