2017-05-09 28 views
1

我在expandableItem中显示了一个徽章。当用户点击该项目时,我希望expandableItem中的徽章消失,并在子项目中显示徽章。 但在我的代码中,当我点击时,徽章消失,但子项目未显示。我做错了什么? 谢谢。updateBadge in MaterialDrawer中的expandableitem Android

result = new DrawerBuilder() 
      .withActivity(this) 
      .withToolbar(appbar) 
      .withHasStableIds(true) 
      .withAccountHeader(headerResult) 
      .addDrawerItems(
        ... 

        new ExpandableBadgeDrawerItem().withName("Collapsable Badge").withIcon(R.drawable.ic_menu_exp).withIdentifier(18).withSelectable(false).withBadge("2").withBadgeStyle(new BadgeStyle().withTextColor(Color.WHITE).withColorRes(R.color.md_red_700)).withSubItems(
          new SecondaryDrawerItem().withName("CollapsableItem").withLevel(2).withIcon(R.drawable.ic_menu_send).withIdentifier(2000).withBadge("2").withBadgeStyle(new BadgeStyle().withTextColor(Color.WHITE).withColorRes(R.color.md_red_700)), 
          new SecondaryDrawerItem().withName("CollapsableItem 2").withLevel(2).withIcon(R.drawable.ic_menu_send).withIdentifier(2001) 
        ) 
      ) 
      .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { 
       @Override 
       public boolean onItemClick(View view, int position, IDrawerItem drawerItem) { 


        if (drawerItem != null) { 

         if (drawerItem.getIdentifier() == 18) { 
          result.updateBadge(18, null); 
         } 
        } 

        return false; 
       } 
      }) 
      .withSavedInstance(savedInstanceState) 
      .build(); 

回答

2

我检查它,你是对的,这是基本的方法的结果如何垫层FastAdapter手柄的扩张项目,如果父更新它会崩溃孩子的。这将在FastAdapter的v3中得到改进,然后请使用以下代码片段:

//get the item from our drawerItem 
ExpandableBadgeDrawerItem d = (ExpandableBadgeDrawerItem) drawerItem; 
//remove the badge 
d.withBadge((StringHolder) null); 
//notify the adapter that the item was changed 
result.getAdapter().notifyItemChanged(result.getPosition(18));