N J
N J

Reputation: 27515

Update statement in Realm

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

Answers (2)

N J
N J

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

EpicPandaForce
EpicPandaForce

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

Related Questions