2016-12-13 9 views
0

Я создаю подменю в NavigationView, которое заполнено тремя последними проектами, с которыми работал пользователь.Обновление элемента подменю в NavigationView, заполненном данными Realm

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) 
} 

Моя проблема заключается в том, что список не будет обновляться, если будет создан новый проект, или если один из последних проектов удаляется. Обновление списка с новыми проектами не является проблемой, так как я могу делать это вручную каждый раз, когда пользователь создает его. Однако, когда проект удален, я не знаю, как с ним бороться, так как эта операция обрабатывается внутри адаптера, а не в действии.

Любая идея, как можно преодолеть это? Заранее благодарим за ваше время.

ответ

1

После нескольких дней, разбивающих мой разум, чтобы решить это, как только я разместил вопрос, решение пришло мне в голову.

Я просто добавил список изменений в свои RealmResults, который будет запущен при добавлении/удалении проектов.

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); 
     } 
    }); 

Небольшое замечание: в setRecentProjectSubMenu, подменю должно быть очищено. recentProjectSubMenu.clear();

+0

Вы должны использовать 'findAllSorted()' вместо 'findAll(). Sort (...)', но да – EpicPandaForce