2015-06-19 2 views
11

есть VisitingCardPOJO вид стол. Я хочу, чтобы обновить однократная сказать, где нет = 3Операция с обновлениями в 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; 
    } 
} 

ответ

24

Я нашел решение, как и он работал

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

Это правильный способ сделать это :) – Emanuelez

+2

@Nilesh Что делать, если мне нужно обновить только один столбец, а не полный объект? –

+1

@BSTKaal сделать так, так или иначе. Realm проверит, какие свойства необходимо обновить. –

5

Фактическое право способ сделать это - это

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

нужно ли использовать блок catch catch? – Zahidul

+0

какой блок try-catch? – EpicPandaForce

Смежные вопросы