2015-06-19 13 views
11

Ich habe VisitingCardPOJO Formulartabelle. Ich möchte einzelnen Eintrag aktualisieren sagen, wo no = 3Update-Anweisung in Realm

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; 
    } 
} 

Antwort

24

ich die Lösung, wie gefunden und es funktionierte

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(); 
    } 

demo for Realm

+1

Das ist der richtige Weg, es zu tun :) – Emanuelez

+2

@Nilesh Was ist, wenn ich nur eine Spalte aktualisieren muss, nicht das komplette Objekt? –

+1

@BSTKaal mach es trotzdem so. Der Realm prüft, welche Eigenschaften aktualisiert werden müssen. –

5

Die tatsächliche Recht sehen Weg, es zu tun ist dies

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()); 
      } 
     } 
    }); 
} 
+0

ist es notwendig, try catch block zu verwenden? – Zahidul

+0

welcher try-catch-block? – EpicPandaForce