2015-08-18 3 views
3

Как я могу создать пользовательский DrawerItem (1. Мне нужно переключиться 2. Мне нужен индикатор состояния boolean) в библиотеке MaterialDrawer? Here Автор MaterialDrawer говорит, что создание пользовательского DrawerItem - очень простая задача, но я не могу найти его в документации этой библиотеки.MaterialDrawer customdraweritem

+1

[здесь] (http://www.android4devs.com/2015/06/navigation-view-material-design-support.html) является лучшим примером –

+0

Спасибо, но как реализовать его в библиотеке MaterialDrawer? Я нашел, как создать toggle: через ToggleDrawerItem (документация не говорит об этом). Теперь только один вопрос: как создать индикатор логического состояния (например: меню имеет элемент Activity Activity и имеет два состояния, активные и неактивные. Как я могу это показать?) –

+0

вы сделали что-нибудь, если да, чем почтовый индекс, если не использовать Например, я расскажу, что делать дальше –

ответ

6

Для реализации CustomDrawerItem вам необходимо реализовать интерфейс IDrawerItem. Это определяет все необходимые методы. Просто присмотритесь к DividerDrawerItem или SectionDrawerItem, которые немного проще.

public class DividerDrawerItem extends AbstractDrawerItem<DividerDrawerItem> { 
    @Override 
    public String getType() { 
     return "DIVIDER_ITEM"; 
    } 

    @Override 
    @LayoutRes 
    public int getLayoutRes() { 
     return R.layout.material_drawer_item_divider; 
    } 

    @Override 
    public void bindView(RecyclerView.ViewHolder holder) { 
     Context ctx = holder.itemView.getContext(); 

     //get our viewHolder 
     ViewHolder viewHolder = (ViewHolder) holder; 

     //set the identifier from the drawerItem here. It can be used to run tests 
     holder.itemView.setId(getIdentifier()); 

     //define how the divider should look like 
     viewHolder.view.setClickable(false); 
     viewHolder.view.setEnabled(false); 
     viewHolder.view.setMinimumHeight(1); 

     //set the color for the divider 
     viewHolder.divider.setBackgroundColor(UIUtils.getThemeColorFromAttrOrRes(ctx, R.attr.material_drawer_divider, R.color.material_drawer_divider)); 

     //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) 
     onPostBindView(this, holder.itemView); 
    } 

    @Override 
    public ViewHolderFactory getFactory() { 
     return new ItemFactory(); 
    } 

    public static class ItemFactory implements ViewHolderFactory<ViewHolder> { 
     public ViewHolder factory(View v) { 
      return new ViewHolder(v); 
     } 
    } 

    private static class ViewHolder extends RecyclerView.ViewHolder { 
     private View view; 
     private View divider; 

     private ViewHolder(View view) { 
      super(view); 
      this.view = view; 
      this.divider = view.findViewById(R.id.material_drawer_divider); 
     } 
    } 
}