@Override public boolean onItemClick(View view, int position, IDrawerItem drawerItem) { if (!isSelectable()) { checked = !checked; viewHolder.switchView.setChecked(checked); } return false; } });
public Item withCheckable(boolean checkable) { return withSelectable(checkable); }
@Override public void bindView(final ViewHolder viewHolder, List payloads) { super.bindView(viewHolder, payloads); //bind the basic view parts bindViewHelper(viewHolder); //handle the switch viewHolder.switchView.setOnCheckedChangeListener(null); viewHolder.switchView.setChecked(checked); viewHolder.switchView.setOnCheckedChangeListener(checkedChangeListener); viewHolder.switchView.setEnabled(switchEnabled); //add a onDrawerItemClickListener here to be able to check / uncheck if the drawerItem can't be selected withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { @Override public boolean onItemClick(View view, int position, IDrawerItem drawerItem) { if (!isSelectable()) { checked = !checked; viewHolder.switchView.setChecked(checked); } return false; } }); //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) onPostBindView(this, viewHolder.itemView); }
@Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isEnabled()) { checked = isChecked; if (getOnCheckedChangeListener() != null) { getOnCheckedChangeListener().onCheckedChanged(AbstractSwitchableDrawerItem.this, buttonView, isChecked); } } else { buttonView.setOnCheckedChangeListener(null); buttonView.setChecked(!isChecked); buttonView.setOnCheckedChangeListener(checkedChangeListener); } } };
@Override protected List<IDrawerItem> reloadDrawerItems(Realm realm, boolean showOnlyUnread) { final List<IDrawerItem> drawerItems = new ArrayList<>(topDrawerItems); ((AbstractSwitchableDrawerItem)topDrawerItems.get(0)).withChecked(showOnlyUnread);