Android RecyclerView GridLayoutManager sortieren?

bruce85

Bekanntes Mitglied
Hallo,
ich versuche schon seit einiger Zeit eine Liste mit 2 Spalten zu sortieren, leider klappt das nicht so richtig.
In meiner App verwende ich eine Realm Datenbank und jeder Eintrag hat eine id für das Sortieren, über diese ich dann in bestimmter Reihenfolge Sortieren kann.
In der Methode onItemMove werden die sortIds vertauscht, so das die Sortierte Reihenfolge gespeichert bleibt.
Aber bei 2 Spaltige Liste, klappt die Sortierung nicht richtig, die Items sind dann an einer ganz anderen Stelle, wenn ich die Liste Sortieren möchte:
Java:
@Override 
public boolean onItemMove(int fromPosition, int toPosition) {
    RealmList<CatItem> results = new RealmList<>();
    results.addAll(AppConfig.CAT_ITEM_LIST);

    if (fromPosition < toPosition) {
        for (int i = fromPosition; i < toPosition; i++) {
            realm.beginTransaction();
            long sortId = results.get(i).getSortId();
            results.get(i).setSortId(results.get(i+1).getSortId());
            results.get(i+1).setSortId(sortId);
            realm.commitTransaction();
        }
    } else {
        for (int i = fromPosition; i > toPosition; i--) {
            realm.beginTransaction();
            long sortId = results.get(i).getSortId();
            results.get(i).setSortId(results.get(i-1).getSortId());
            results.get(i-1).setSortId(sortId);
            realm.commitTransaction();
        }
    }
    adapter.notifyItemMoved(fromPosition, toPosition);

    return true;
}

Bei 1 Spaltige Liste klappt die Sortierung hiermit:
Java:
@Override
    public boolean onItemMove(int fromPosition, int toPosition) {
        RealmList<CatItem> results = new RealmList<>();
        results.addAll(AppConfig.CAT_ITEM_LIST);
        realm.beginTransaction();
        long sortId = results.get(fromPosition).getSortId();
        results.get(fromPosition).setSortId(results.get(toPosition).getSortId());
        results.get(toPosition).setSortId(sortId);
        realm.commitTransaction();
        adapter.notifyItemMoved(fromPosition, toPosition);
        return true;
    }

Kann mir da Vielleicht jemand Weiterhelfen, wie ich das Problem lösen kann?
Ich bedanke mich schon mal im Voraus.

Gruss
 

Ähnliche Java Themen

Neue Themen


Oben