【问题标题】:How to add ROOM queries that take parameters and return data如何添加带参数并返回数据的 ROOM 查询
【发布时间】:2021-11-30 09:41:15
【问题描述】:
我正在尝试创建一个新的房间数据库查询,该查询接受一个参数并返回一个列表。我阅读的所有文档和观看的视频仅向我展示了 DAO 查询(我已经完成了),但我找不到的是如何为存储库和 viewModel 类创建后续查询。
这是我的 DAO 查询;
@Query("SELECT * FROM member WHERE name = :reselectedPlayerName")
List<Member> getPlayersForReselection(String reselectedPlayerName);
我已经成功创建了一个不带任何参数的“LiveData”查询(用于另一个任务),但这次我不想要 Livedata 查询,而且我看不到如何在存储库类中创建查询。
【问题讨论】:
标签:
java
repository
android-room
viewmodel
【解决方案1】:
答案通常很简单!...但是当您只见树木不见森林时......
如果有人想要更多细节,我很乐意详细说明我的发现和所做的,但这就是我最终要做的;
(我知道我说过我不想使用 LiveData,但我这样做只是为了证明)
道
@Query("SELECT * FROM member WHERE name = :aStr")
LiveData<List<Member>> getPlayersForReselectionDb(String aStr);
存储库
public LiveData<List<Member>> getPlayersForReselectionDb(String aStr){
reselectedMembers = memberDAO.getPlayersForReselectionDb(aStr);
return reselectedMembers;
}
视图模型
public LiveData<List<Member>> getPlayersForReselectionDb(String aStr) {
reselectedMembers = memberRepository.getPlayersForReselectionDb(aStr);
return reselectedMembers;
}
片段
MemberViewModel memberViewModel = new
ViewModelProvider(this).get(MemberViewModel.class);
memberViewModel.getPlayersForReselectionDb("Fred Bloggs").observe(this,
new Observer<List<Member>>() {
@Override
public void onChanged(List<Member> members) {`enter code here`}
}
});