2016-12-31 6 views
2
@Override 
public boolean onItemMove(int fromPosition, int toPosition) { 

    RealmList<Note> results = new RealmList<>(); 
    results.addAll(mNotes.subList(0, mNotes.size())); 

    if (fromPosition < toPosition) { 
     for (int i = fromPosition; i < toPosition; i++) { 
      Collections.swap(results, i, i + 1); 
     } 
    } else { 
     for (int i = fromPosition; i > toPosition; i--) { 
      Collections.swap(results, i, i - 1); 
     } 
    } 

    mNotes = results.where().findAll(); 
    notifyItemMoved(fromPosition, toPosition); 
    return true; 
} 

Я хочу, чтобы выполнить функцию подкачки, чтобы изменить порядок элементов в adapter.Basically я имею дело со списком по пунктам и перетаскивания Я хочу изменить order.What я сделал, я скопировал значения из RealmResults mNotes в результаты RealmList и сделал swap. Как вернуть его в базу данных Realm?Как выполнить функцию подкачки на RealmResults

mNotes = results.where(). FindAll(); Эта строка кода невозможна, так как RealmList не находится в управляемом режиме.

+0

Я уверен, надеюсь, что у вас есть поле, которое соответствует положению пункта. – EpicPandaForce

+0

Элементы @sreejith 'RealmResults' не могут быть заменены напрямую. Как предлагает @EpicPandaForce, я думаю, вам нужно дополнительное поле (назовем его 'position'). Вы можете сортировать «RealmResults» с помощью этого поля, а затем обмениваться на объект, заменяя значения поля 'position'. – geisshirt

+0

Спасибо за комментарии. Основываясь на вашем предположении, я попробовал сортировать метод, подобный этому. MNotes.sort (new Comparator () { @Override public int compare (Примечание o1, Примечание o2) { return results.indexOf (o1. getId()) - results.indexOf (o2.getId()); } }); Но это только для api 24. Использование этого для android.And Collection.sort метод не может быть сделан для realmResults! –

ответ

0

Я считаю, что вам нужно скопировать не-управляемую коллекцию с помощью

copyToRealmOrUpdate метода:

// Initialize Realm 
Realm.init(context); 
// Get a Realm instance for this thread 
Realm realm = Realm.getDefaultInstance(); 
realm.copyToRealmOrUpdate(results); 
+0

Не работает для меня! . Я использую RealmResults mNotes = realm.where (Note.class) .findAll(); для RecyclerViewAdapter. Поскольку обмен не может быть сделан непосредственно в RealmResults, я конвертирую это в RealmList и выполняю swap. После обмена мне нужно вернуть его в RealmResults в моем случае mNotes. - –

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