0

Realm に DB からデータを選択する方法がなくfromto使おうとするbetween()と結果の最後に不要な項目が出てくるので、そのコピーを new に取得してから削除したいlistObject

しかし、別のリストオブジェクトにコピーした後でも、最後のアイテムを削除できませんrealmResult

RealmResults<CalendarDto> currentMonthDTOList = Realm.getDefaultInstance().where(CalendarDto.class).between("primaryDayId", startingDayPrimaryKey, endingDayPrimaryKey).findAll().sort("primaryDayId", Sort.ASCENDING);
List<CalendarDto> currentList = currentMonthDTOList;
currentList.remove(currentList.size());

しかし、unsupportedOperationException というエラーが表示されます。

うちの丸太猫はこんな感じ

 FATAL EXCEPTION: main
    Process: com.toyanathpatro.gurkha, PID: 17714
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.toyanathpatro.gurkha/com.toyanathpatro.gurkha.activities.DashBoardActivity}: java.lang.ClassCastException: io.realm.RealmResults cannot be cast to java.util.ArrayList
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
    Caused by: java.lang.ClassCastException: io.realm.RealmResults cannot be cast to java.util.ArrayList
    at com.toyanathpatro.gurkha.fragments.GridCalendarFragment.fetchData(GridCalendarFragment.java:84)
    at com.toyanathpatro.gurkha.fragments.GridCalendarFragment.onCreateView(GridCalendarFragment.java:42)
    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
    at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)
    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:601)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237)
    at android.app.Activity.performStart(Activity.java:6253)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
4

3 に答える 3

1

後で削除するのではなく、不要なクエリを除外するクエリを作成する必要があります。

これを試して:

RealmResults<CalendarDto> results = Realm.getDefaultInstance().where(CalendarDto.class)
    .greaterThanOrEqualTo("primaryDayId", startingDayPrimaryKey)
    .lessThan("primaryDayId", endingDayPrimaryKey)
    .findAll().sort("primaryDayId", Sort.ASCENDING);
于 2016-06-27T03:35:29.653 に答える
0

a にコピーしようとする代わりに、次の方法で aListにコピーを試みることができますRealmList

RealmList <CalendarDto> currentList = new RealmList<CalendarDto>();
currentList.addAll(yourRealmResults.subList(0, yourRealmResults.size()));

これが人々のために働いているのを見てきましたが、ここでRealm.io のニュースを引用しなければなりません:

進行中の作業

現在 RxJava の初期サポートを出荷していますが、RealmQueryおよびの Observable サポートはまだ不足していRealmListます。これらは今後のアップデートで追加される予定です。

さらに、新しいcopyFromRealm()方法を試して、方法を使用して DB を更新することもできますcopyToRealmOrUpdate()

于 2016-06-26T11:49:52.813 に答える