【发布时间】:2018-09-24 19:51:45
【问题描述】:
我所要做的就是从插入中获取返回值作为 long。我明白了,但它不起作用,我从返回的值中取回 0。我正在使用DAO、存储库和ViewModel,如Google CodeLabs 中所述。我关注了这个帖子Rowid after Insert in Room。
播放器类
@Entity(tableName = "player_table")
public class Player {
@PrimaryKey(autoGenerate = true)
private long id;
@NonNull
@ColumnInfo(name = "username")
private String username;
}
道
@Insert
long insert(Player player);
存储库
public long insert(Player player) {
new insertAsyncTask(mPlayerDao).execute(player);
rowId = player.getId();
return rowId;
}
视图模型
public long insert(Player player){
rowId = mRepository.insert(player);
return rowId;
}
活动
String playerString = editTextUsername.getText().toString();
Player player = new Player(playerString);
long rowId = mDreamViewModel.insert(player);
【问题讨论】:
-
可以添加 Player 类吗?
-
@xcesco 完成...^^^
-
我想知道它是否在 Repository/ViewModel 的返回中??
-
这就是所有的代码?在 ViewModel#insert .. body 是 { long rowId=mRepo...insert(player);返回行号; } 还是 rowId 是在别的地方定义的?
-
@xcesco 是的,它只是设置在 viewModel long rowId 的顶部
标签: java android android-room