MaterialDrawer 6.0.0:SecondaryDrawerItem徽章无法更新问题咨询
关于MaterialDrawer 6.0.0子项徽章无法更新的问题解答
这个问题我之前也碰到过,其实不是bug,是咱们调用方式的问题😉
问题原因
MaterialDrawer的updateBadge(long id, StringHolder badge)方法默认是在根级抽屉项列表中查找对应ID的条目。你的SecondaryDrawerItem(ID=2)是嵌套在ExpandableBadgeDrawerItem(ID=1)的子集合里的,并不在根列表中,所以直接用ID=2调用updateBadge时,抽屉找不到这个子项,自然无法更新徽章。而父项是根级条目,所以能正常被找到并更新。
解决方案
要更新嵌套子项的徽章,需要先通过父项获取到子项实例,再进行更新,具体代码如下:
// 1. 获取根级的父抽屉项 ExpandableBadgeDrawerItem parentItem = result.findItemById(1); // 2. 从父项的子集合中找到目标子项 SecondaryDrawerItem childItem = parentItem.getSubItems().findItemById(2); // 3. 更新子项徽章(两种方式任选其一) // 方式一:直接调用子项的setBadge方法 childItem.setBadge(new StringHolder("1")); // 方式二:传入子项实例给Drawer的updateBadge方法 result.updateBadge(childItem, new StringHolder("1"));
额外注意点
如果你的子项是动态添加到父项中的,记得确保在调用findItemById时,子项已经被正确添加到父项的子集合中,否则会返回null导致更新失败。
内容的提问来源于stack exchange,提问作者Makarele
相关产品推荐
相关产品推荐

