Java简单对象
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;
}
}
我的查询方法
@Query("SELECT * FROM section")
LiveData<List<Section>> getAllSections();
访问数据库
final LiveData<List<Section>> sections = mDb.sectionDAO().getAllSections();
在下一行中,我正在检查sections.getValue()
,尽管数据库中有数据,但它始终返回null,稍后我会在onChanged()
方法中获取该值。
sections.observe(this, new Observer<List<Section>>() {
@Override
public void onChanged(@Nullable List<Section> sections){
}
});
但是当我从查询中省略LiveData时,我得到了预期的数据。
查询方法:@Query("SELECT * FROM section")
List<Section> getAllSections();
访问数据库:
final List<Section> sections = mDb.sectionDAO().getAllSections();
sections.getValue()
呢?LiveData 的作用是用来观察数据的。也许当你在下一行检查数据时,数据还没有被设置到 LiveData 中,这就是为什么它会返回 null 的原因。 简而言之,如果你不想使用 LiveData,那么就直接使用它而不需要 LiveData。 - Moinkhansections.getValue()
为空,我必须调用API获取数据并将其插入到数据库中,最终会调用onChange()
方法,从中获取数据。但是由于这个null
值,我同时从数据库和API获取数据。 - S HaqueonChanged
在数据初始化/准备就绪时也会被调用,这样你就不必自己进行初始数据检索了。 - Karuhanga