【发布时间】:2018-12-27 23:42:37
【问题描述】:
我正在开发一个 Android 应用程序,用户可以在其中根据特定日期保存膳食及其金额。
目前,时间在 SQLite 数据库中存储为yyyy-mm-dd 字符串(我稍后可能会更改数据类型)。
用户可以在CalendarView 上选择日期,RecylerView 应该只显示所选日期的饭菜。我不想检索所有行,而只是根据日期查询行。
我正在使用Room Persistence Library。
我怎样才能做到这一点?
我正在使用 LiveData<List<MYOBJECT>> 和适当的 Observable Listener:
final MyViewModel myViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
String myDate = getDateFromCalendarView();
myViewModel.getMealsOnDate(myDate).observe(this, new Observer<List<MYOBJECT>>() {
@Override
public void onChanged(@Nullable List<MYOBJECT> myObjects) {
adapter.setItems(myObjects); // adapter from RecyclerView
}
});
这是我的 DAO 界面中的查询:
@Query("SELECT * FROM meals WHERE meals_date = :date")
LiveData<List<MYOBJECT>> getMealsOnDate(String date);
目前观察者不会对myDate 中的不同值做出反应,因此我无法从我的数据库中查询不同的行。
这是否可能,还是我必须坚持查询整个表,然后从我的List<MYOBJECT 中选择数据?
【问题讨论】:
-
给我看看你的 DAO
标签: java android android-recyclerview android-room