Reputation: 27515
I have VisitingCardPOJO
form table. I want update single entry say where no=3
VisitingCardPOJO.java
public class VisitingCardPOJO extends RealmObject {
@PrimaryKey private int no;
private String name;
private String address;
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Upvotes: 11
Views: 6798
Reputation: 27515
I found the solution as and It worked
public void updateNewCard(Realm realm, VisitingCardPOJO card) {
realm.beginTransaction();
VisitingCardPOJO toEdit = realm.where(VisitingCardPOJO.class)
.equalTo("no", card.getNo()).findFirst();
toEdit.setName(card.getName());
toEdit.setAddress(card.getAddress());
realm.commitTransaction();
}
see demo for Realm
Upvotes: 25
Reputation: 81539
The actual right way to do it is this
public void updateNewCard(Realm realm, VisitingCardPOJO card) {
final int no = card.getNo();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
VisitingCardPOJO toEdit = realm.where(VisitingCardPOJO.class)
.equalTo("no", no).findFirst();
if(toEdit != null) {
toEdit.setName(card.getName());
toEdit.setAddress(card.getAddress());
}
}
});
}
Upvotes: 6