我在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)
}
我的问题是,如果创建了新项目或删除了其中一个最新项目,则不会更新列表。使用新项目更新列表不是问题,因为每次用户创建项目时我都可以手动执行。但是,当项目被删除时,我不知道如何处理它,因为此操作由适配器内部处理而不是在活动中处理。
任何想法怎么能克服这个? 在此先感谢您的时间。
答案 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();