【问题标题】: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`}
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      • 2017-09-14
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多