【问题标题】:updateBadge in expandableitem in MaterialDrawer AndroidMaterialDrawer Android中expandableitem中的updateBadge
【发布时间】:2017-10-07 12:38:06
【问题描述】:

我在 expandableItem 中显示了一个徽章。当用户单击该项目时,我希望 expandableItem 中的徽章消失并仅在子项目中显示徽章。 但是在我的代码中,当我单击时,徽章会消失,但子项不会显示。我做错了什么? 谢谢。

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

【问题讨论】:

    标签: android badge materialdrawer


    【解决方案1】:

    我检查了它,你是对的,这基本上是底层FastAdapter 处理可扩展项的方式的结果,如果父项更新它将折叠子项。这将在FastAdapter 的 v3 中得到改进,在此之前请使用以下 sn-p:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多