【发布时间】:2018-09-09 09:00:06
【问题描述】:
我是Room 的新手,我正在尝试通过query 我的database 从中获取row。我尝试通过querying 使用 id 的primary key 这样做,但问题是我不知道如何从repository 返回目标object。
这是Dao
@Query("SELECT * FROM targets WHERE id = :id LIMIT 1")
Targets findTargetById(int id);
这是存储库类
public Targets findTarget (int id) {
new findTargetByIDAsyncTask(mTargetsDao).execute(id);
}
private static class findTargetByIDAsyncTask extends AsyncTask<Integer, Void, Targets> {
private TargetsDao mAsyncTaskDao;
findTargetByIDAsyncTask(TargetsDao dao) {
mAsyncTaskDao = dao;
}
@Override
protected Targets doInBackground(Integer... integers) {
return mAsyncTaskDao.findTargetById(integers[0]);
}
@Override
protected void onPostExecute(Targets targets) {
super.onPostExecute(targets);
}
}
【问题讨论】:
-
您可以在存储库的 onPostExecute 方法中对目标执行任何操作。如果您想在 assyncTask 之外的任何地方使用它,那么您可以创建一个全局变量并影响 onPostExecute 中的值
标签: java android android-room