所以我写了一种方法来检查房间数据库中是否已经添加了物品:
if(!CheckifExisits(item)){
itemViewModel.addItem(item);
}else{
Log.e(TAG, "getPrice: Item Already Exists");
context.runOnUiThread(() -> Toast.makeText(context, "Item is already added", Toast.LENGTH_LONG).show());
}
private boolean CheckifExisits(Item itemOutSide){
Exists = false;
itemViewModel.getAllItem().observeForever(items -> {
if (items != null) {
for (Item item: items){
if(item.getUrl().equals(itemOutSide.getUrl())&&item.getName().equals(itemOutSide.getName())){
Exists = true;
break;
}
}
}
});
return Exists;
}
现在,我们第一次添加项目,但没有任何反应,通常情况下,该项目已正常添加到数据库中,再次单击添加按钮后,该方法工作正常,并且收到消息,表明该项目已在数据库中,但是当我关闭了应用程序,然后重新打开它,不仅它无法检测到数据库中已经存在的对象,而且即使该项目已经存在于数据库中,它也会重新添加,好像是一个新项目一样!
怎么回事?我该如何解决?
答案 0 :(得分:0)
我认为这与数据库无关。 尝试用以下代码替换您的代码:
private boolean CheckifExisits(Item itemOutSide){
Exists = false;
itemViewModel.getAllItem().observeForever(items -> {
if (items != null) {
for (Item item: items){
if(item.getUrl().compareTo(itemOutSide.getUrl()) == 0 && item.getName().compareTo(itemOutSide.getName()) == 0){
Exists = true;
break;
}
}
}
});
return Exists;
}
等于用于比较对象,我想您想比较字符串的内容。 参见here。