1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. falko1985, 08.11.2018 #1
    falko1985

    falko1985 Threadstarter Neuer Benutzer

    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.
    Um 2 Spalten in RecyclerView zu erhalten, benutze ich folgendes:
    Code:
    recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
    und so versuche ich die Items zu Sortieren:
    Code:
    @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:
    Code:
    @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
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Daten von Firebase mit Progressbar in RecyclerView laden Android App Entwicklung 21.10.2018
ListView mit eigenem Layout zeigt im Querformat Items doppelt an Android App Entwicklung 24.06.2018
Spinner item in Datenbank schreiben mysql Android App Entwicklung 23.12.2017
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.