2016-12-13 2 views
0

Ich erstelle ein Untermenü in einem NavigationView, das mit den letzten drei Projekten gefüllt ist, mit denen der Benutzer gearbeitet hat.Aktualisieren eines Untermenüelements in einem mit Realm-Daten bestückten NavigationsView

RealmResults<Project> lastestProjectsReaml = mDB.where(Project.class).findAll().sort("pLastModification", Sort.DESCENDING); 
ArrayList<String> recentProjects   = new ArrayList<>(); 

for (int i = 0; i < 3; i++){ 
    recentProjects.add(lastestProjectsReaml.get(i).getpName()); 
} 
for (String value : lastestProjects){ 
     recentProjectSubMenu.add(value) 
} 

Mein Problem ist, dass die Liste nicht aktualisiert werden, wenn ein neues Projekt angelegt wird oder wenn eines der neuesten Projekte gestrichen. Aktualisieren der Liste mit neuen Projekten ist kein Problem, da ich es jedes Mal manuell erstellen kann, wenn der Benutzer einen erstellt. Wenn ein Projekt jedoch gelöscht wird, kann ich nicht damit umgehen, da diese Operation intern vom Adapter und nicht in der Aktivität behandelt wird.

Irgendeine Idee, wie könnte man das überwinden? Vielen Dank im Voraus für Ihre Zeit.

Antwort

1

Nach ein paar Tagen meine Meinung zu lösen, sobald ich die Frage veröffentlichte, kam mir die Lösung in den Sinn.

Ich habe meinen RealmResults einfach einen changelistener hinzugefügt, der beim Hinzufügen/Löschen von Projekten ausgelöst wird.

RealmResults<Project> userProject = mDB.where(Project.class).findAll().sort("pLastModification", Sort.DESCENDING); 
userProject.addChangeListener(new RealmChangeListener<RealmResults<Project>>() { 
     @Override 
     public void onChange(RealmResults<Project> element) { 
      setRecentProjectSubMenu(navigationView); 
     } 
    }); 

Eine kleine Bemerkung: In den setRecentProjectSubMenu weist das Untermenü gelöscht. recentProjectSubMenu.clear();

+0

Sie sollten 'findAllSorted()' anstelle von 'findAll() verwenden. Sort (...)', aber yeah – EpicPandaForce

Verwandte Themen