问题描述
我正在第一次实现 ROOM,我的 UI 控制器中有一个运行对象
public void onStopButtonClick(View v){
Run run = new Run(totaldistance,elapsedMillis,speedVal);
viewmodel.insert(run);
}
它通过我的 viewmodel 传递,然后是我的存储库,然后进入我的数据库类:
private static RoomDatabase.Callback createCallback = new RoomDatabase.Callback() {
@Override
public void onCreate(@NonNull SupportsqliteDatabase db) {
super.onCreate(db);
Log.d("g53mdp","dboncreate");
databaseWriteExecutor.execute(() -> {
RunDao runDao = INSTANCE.runDao();
runDao.deleteall();
Run run = new Run(50,50,50);
runDao.insert(run);
});
}
};
在这里我迷路了......我为每个值放置了 50 作为占位符,因为我对它应该如何获取我从 repo 传递的运行实体感到困惑 这是我的回购:
public class MyRepository {
private RunDao runDao;
private LiveData<List<Run>> allRuns;
MyRepository(Application application) {
MyRoomDatabase db = MyRoomDatabase.getDatabase(application);
runDao = db.runDao();
allRuns = runDao.getRunById();
}
LiveData<List<Run>> getAllRuns() {
return allRuns;
}
void insert(Run run) {
MyRoomDatabase.databaseWriteExecutor.execute(() -> {
runDao.insert(run);
});
}
}
这是我的道:
@Dao
public interface RunDao {
@Insert(onConflict = OnConflictStrategy.IGnorE)
void insert(Run run);
@Query("DELETE FROM run_table")
void deleteall();
@Query("SELECT * FROM run_table ORDER BY id ASC")
LiveData<List<Run>> getRunById();
@Query("SELECT * FROM run_table ORDER BY distance ASC")
LiveData<List<Run>> getRunBydistance();
@Query("SELECT * FROM run_table ORDER BY time ASC")
LiveData<List<Run>> getRunByTime();
@Query("SELECT * FROM run_table ORDER BY speed ASC")
LiveData<List<Run>> getRunBySpeed();
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)