2016-05-26 7 views
4

にレルムからの単一のオブジェクトデータ/行を削除私はこのような単一のユーザーのデータを追加しましたこのようにしても、うまくいきません。はアンドロイド

Realm realm = Realm.getDefaultInstance(); 
UserDatabase tempUser = new UserDatabase(); 
final RealmResults<UserDatabase> students = realm.where(UserDatabase.class).findAll(); 

    for(int i=0 ; i<students.size();i++){ 
    final int index =i; 
    if((students.get(i).getUserID()).equals(prefs.getString(QRActivity.USER_ID_AFTER_LOGIN,"jpt"))&& 
    (students.get(i).getUserName()).equals(prefs.getString(QRActivity.USER_NAME_AFTER_LOGIN,"jpt"))){ 

     realm.executeTransaction(new Realm.Transaction() { 

      public void execute(Realm realm) { 

      //Trying to delete a row from realm.         

      students.deleteFromRealm(index); 

      } 
      }); 

    } 
} 

他にもありますか?

答えて

10

一致するinstanceRealmResults<UserDatabase>です。実行ループではなくRealm Queryを使用してください。これを試して。

final RealmResults<UserDatabase> students = realm.where(UserDatabase.class).findAll(); 

    UserDatabase userdatabase = students .where().equalTo("userId",prefs.getString(QRActivity.USER_ID_AFTER_LOGIN,"jpt")).equalTo("userName",prefs.getString(QRActivity.USER_NAME_AFTER_LOGIN,"jpt")).findFirst(); 

    if(userdatabase!=null){ 

    if (!realm.isInTransaction()) 
    { 
     realm.beginTransaction(); 
    } 

    userdatabase.deleteFromRealm(); 

     realm.commitTransaction(); 
    } 

注:私はちょうどあなたがあなたの代わりに、列の名前を書くことができ、あなたの列に「はuserId」と「ユーザー名」を前提としています。