@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我与名单上的项目和拖处理项目的顺序和删除我要重新排列顺序。我所做的是将RealmResults mNotes中的值复制到RealmList结果并完成了swap。如何将其返回到Realm数据库?如何执行上RealmResults交换功能
mNotes = results.where()。findAll(); 这行代码是不可能的,因为RealmList不处于受管模式。
我当然希望你有一个对应于该项目的位置的字段。 – EpicPandaForce
@sreejith'RealmResults'元素不能直接交换。正如@EpicPandaForce所建议的,我认为你需要额外的领域(让我们称之为“职位”)。您可以使用该字段对RealmResults进行排序,然后交换对象,然后交换位置字段的值。 – geisshirt
感谢都为您的建议我尝试排序这样mNotes.sort(新比较(){ @覆盖 公众诠释方法比较comments.Based(注O1,O2注){ 回报results.indexOf(O1。 getId()) - results.indexOf(o2.getId()); } });但这只适用于api 24。使用android.And和Collection.sort方法不能为realmResults执行此操作! –