Android Studio / LiveData / Wyciągnięcie danych

Android Studio / LiveData / Wyciągnięcie danych
TM
  • Rejestracja: dni
  • Ostatnio: dni
0

Odpalam sobie taki przykład RecyclerListView: https://codinginflow.com/tutorials/android/room-viewmodel-livedata-recyclerview-mvvm/part-10-listadapter
i chcę z zewnętrznego zdarzenia sprawdzić dane z mojej bazy w formie LiveData.

Nie potrafię z LiveData wyciągnąć ilość rekordów i sprawdzić każdy pod względem zgodności - poniżej daje kod jak to rozumiem lecz nie działa bo nie rzutuje się.
Czy idzie po prostu też w pętli wyciągnąć dane z LiveData?

Kopiuj
    private NoteRepository repository;
    private LiveData<List<Note>> allNotes;
    private List<Note> notes = new ArrayList<>();
    
    public NoteSync(Context applicationContext) {
        repository = new NoteRepository(getApplication(applicationContext));
        allNotes = repository.getAllNotes();

        notes = allNotes.getValue(); //jak to przypisać
        
        for (i=0; i<notes.size(); i++) {
          Node currentNode = notes.get(i);
          if (currentNode.getTitle == "Moja nazwa") {
            //... wykonaj coś tam ...
          }
        }
    }

AA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0
  1. W javie nie piszę od kilku lat ale coś takiego:
Kopiuj
List<Note> tempNotes = allNotes.getValue(); 
notes.addAll(tempNotes)

Ważne, LiveData.Value może być null'em
Więc:

Kopiuj
List<Note> tempNotes = allNotes.getValue(); 
if (tempNotes != null) {
    notes.addAll(tempNotes)
}

W dodatku nie napisałeś co zwraca getAllNotes()

W dodatku LiveData służy głownie do reaktywnego programowania -> Observer Pattern

2.W dodatku złe porównanie stringa. Zamiast:

Kopiuj
if (currentNode.getTitle == "Moja nazwa") {

powinno być

Kopiuj
if (currentNode.getTitle.equals("Moja nazwa")) {

Poczytaj o porównaniu referencji vs porównaniu wartości

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.