更新填充了Realm Data的NavigationView中的子菜单项

时间:2016-12-13 10:29:15

标签: android realm navigationview

我在NavigationView中创建一个子菜单,该子菜单填充了用户使用过的最后三个项目。

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 个答案:

答案 0 :(得分:1)

经过几天的努力解决这个问题,我一发布问题就解决了这个问题。

我只是在我的RealmResults中添加了一个changelistener,它将在添加/删除项目时触发。

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