Wpis z mikrobloga

Czołem Androidowcy, czy miał ktoś taki problem z databinding, że nie zawsze mu on wypełnia pola?

Mam formularz z kilkoma polami EditText i TextField, które wyświetlają informacje o tworzonym obiekcie. W zależności czy chcę dodać nowy obiekt czy go edytować to w Viemodelu tworzę pusty obiekt albo pobieram go sobie z Rooma i przypisuję do zmiennej zbindowanej z layoutem. No i na 10 przypadków pewnie z 6 jest okej, a te 4 nie ustawiają żadnej wartości przy edycji. Obiekt zawsze jest pobierany z bazy i przypisywany do tej samej zmiennej. Przy uzupełnianiu formularza wartości w obiekcie zawsze się zmieniają, ale na ekranie w zbindowanych TextFieldach nic się nie wyświetla. Czy ktoś spotkał się z podobnym problemem?

https://pastebin.com/BTLB87DY - Fragment
https://pastebin.com/ZiaW41fW - Viewmodel
https://pastebin.com/0iGqcsMg - Obiekt z Rooma
https://pastebin.com/W9ZvvSFR - layout

#androiddev #programowanie
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Uśpienie wątku to najlepsze rozwiązanie w tej sytuacji?


@Rubajticos: To jest akurat najgłupsze rozwiązanie:) Poprosiłem CIę o to, żeby sprawdzić, czy dobrze zrozumiałem kod.
Otóz problemem jest to, że podczas startu aplikacji podmieniasz zmienną mPiggy. Ten
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@piszczalka: dzięki, sprawdzę jak wrócę z pracy :)
A co do tej apokalipsy co byś tutaj zalecił? Wydzielić walidację i pola z błędami od osobnej klasy? Wtedy zostanie w zasadzie samo entity i metody je jakoś modyfikujące. W ViewModelu mogę operować na samym entity czy jednak powinienem zrobić jakąś klasę opakowującą i przed zapisałem do bazy ją mapować na entity? W takiej sytuacji chyba bez sensu będzie BaseObservable na entity.
  • Odpowiedz
@Rubajticos: To jest lepsze podejście. Zrefaktorowałbym jednak Piggy i do modelu dodał pola, które są bindowane do widoku. Jak pisałem wcześniej, uważam, że u Ciebie ta klasa odpowiada za zbyt dużo rzeczy.
  • Odpowiedz