POJO Java ObjectLiveData.getValue() zwraca wartość null z pokoju
public class Section {
@ColumnInfo(name="section_id")
public int mSectionId;
@ColumnInfo(name="section_name")
public String mSectionName;
public int getSectionId() {
return mSectionId;
}
public void setSectionId(int mSectionId) {
this.mSectionId = mSectionId;
}
public String getSectionName() {
return mSectionName;
}
public void setSectionName(String mSectionName) {
this.mSectionName = mSectionName;
}
}
Moja metoda Zapytanie
@Query("SELECT * FROM section")
LiveData<List<Section>> getAllSections();
Dostęp DB
final LiveData<List<Section>> sections = mDb.sectionDAO().getAllSections();
W następnym wierszu Mam sprawdzanie sections.getValue()
który zawsze daje mi wartość null, chociaż mam dane w bazie danych, a później otrzymuję wartość wMetoda.
sections.observe(this, new Observer<List<Section>>() {
@Override
public void onChanged(@Nullable List<Section> sections){
}
});
Kiedy jednak pominąć LiveData z zapytania otrzymuję dane zgodnie z oczekiwaniami. Metoda Zapytanie:
@Query("SELECT * FROM section")
List<Section> getAllSections();
Dostęp DB:
final List<Section> sections = mDb.sectionDAO().getAllSections();
Ale dlaczego chcesz użyć 'sections.getValue()', a liveata są używane do obserwacji danych. Może być, gdy sprawdzasz w następnej linii, dane nie są ustawiane w trybie liveata, dlatego daje zero. W skrócie, jeśli nie chcesz używać 'LiveData', po prostu użyj go bez' LiveData'. – Moinkhan
Chcę użyć pliku liveata ... jeśli 'sections.getValue()' ma wartość null Muszę wywołać api dla danych i wstawić do bazy danych, która ostatecznie wywoła metodę 'onChange()', skąd otrzymam dane . Ale z powodu tej wartości "null", jeśli i pobieranie danych z bazy danych i api. – CodeCameo