这是关于Android活动的更多设计问题。
要点:
长版:
我在JSON文件中有类别,每个类别都有单独的JSON文件中的文章。在主要活动“CategoriesList”中,初始化ArticleProvider,从“main_categories.json”文件中读取类别,并向用户显示列表。
根据所选类别,我使用Extras将所选类别传递给下一个活动(“ArticleList”),并显示文章列表。
现在我决定创建子类别。所以CategoriesList调用CategoriesList并使用extras我读取一个新文件而不是“main_categories.json”,并显示新的子类别列表。当我输入子类别时,将显示该子类别的文章列表。
我的问题是,当我从子类别CategoriesList中单击后退按钮时,它会一直返回到第一个屏幕,而RecylerView会显示主要类别。如果我点击它们中的任何一个,我会得到关于索引的错误,因为包含categoriesList的ArticleProvide仍然是子类别。
如何解决这样的问题?无论如何要覆盖从子类别CategoriesList回到调用它的主要CategoriesList,或者一般来说我的设计是坏的?
我很难为你提供代码,因为它太长了,正如我所提到的,这更像是一个设计问题。如果需要,我会这样做。
另外我知道有一个解决方法来创建一个新的SubCategoriesList过程,但它与CategoriesList基本相同,所以如果可能的话我想让它工作。
答案 0 :(得分:0)
如果我理解正确,您似乎没有正确更新适配器,或者没有发送通知状态更改。
您可以通过覆盖onBackPressed
捕获后退按钮操作,然后发送事件或手动更新适配器。通过使用internal broadcast,您可以实现某种Observer模式,允许您的适配器订阅一些自定义事件" back_to_categories",这将由您的片段在后退按钮上发出。