mirror of
https://github.com/szkolny-eu/szkolny-android.git
synced 2025-04-20 14:23:09 +02:00
127 lines
4.0 KiB
Java
127 lines
4.0 KiB
Java
package com.mikepenz.materialdrawer.model;
|
|
|
|
import androidx.annotation.LayoutRes;
|
|
import androidx.appcompat.widget.SwitchCompat;
|
|
import android.view.View;
|
|
import android.widget.CompoundButton;
|
|
|
|
import com.mikepenz.materialdrawer.Drawer;
|
|
import com.mikepenz.materialdrawer.R;
|
|
import com.mikepenz.materialdrawer.interfaces.OnCheckedChangeListener;
|
|
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* Created by mikepenz on 03.02.15.
|
|
*/
|
|
public abstract class AbstractSwitchableDrawerItem<Item extends AbstractSwitchableDrawerItem> extends BaseDescribeableDrawerItem<Item, AbstractSwitchableDrawerItem.ViewHolder> {
|
|
|
|
private boolean switchEnabled = true;
|
|
|
|
private boolean checked = false;
|
|
private OnCheckedChangeListener onCheckedChangeListener = null;
|
|
|
|
public Item withChecked(boolean checked) {
|
|
this.checked = checked;
|
|
return (Item) this;
|
|
}
|
|
|
|
public Item withSwitchEnabled(boolean switchEnabled) {
|
|
this.switchEnabled = switchEnabled;
|
|
return (Item) this;
|
|
}
|
|
|
|
public Item withOnCheckedChangeListener(OnCheckedChangeListener onCheckedChangeListener) {
|
|
this.onCheckedChangeListener = onCheckedChangeListener;
|
|
return (Item) this;
|
|
}
|
|
|
|
public Item withCheckable(boolean checkable) {
|
|
return withSelectable(checkable);
|
|
}
|
|
|
|
public boolean isChecked() {
|
|
return checked;
|
|
}
|
|
|
|
public boolean isSwitchEnabled() {
|
|
return switchEnabled;
|
|
}
|
|
|
|
public OnCheckedChangeListener getOnCheckedChangeListener() {
|
|
return onCheckedChangeListener;
|
|
}
|
|
|
|
@Override
|
|
public int getType() {
|
|
return R.id.material_drawer_item_primary_switch;
|
|
}
|
|
|
|
@Override
|
|
@LayoutRes
|
|
public int getLayoutRes() {
|
|
return R.layout.material_drawer_item_switch;
|
|
}
|
|
|
|
@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 ViewHolder getViewHolder(View v) {
|
|
return new ViewHolder(v);
|
|
}
|
|
|
|
public static class ViewHolder extends BaseViewHolder {
|
|
private SwitchCompat switchView;
|
|
|
|
private ViewHolder(View view) {
|
|
super(view);
|
|
this.switchView = (SwitchCompat) view.findViewById(R.id.material_drawer_switch);
|
|
}
|
|
}
|
|
|
|
private CompoundButton.OnCheckedChangeListener checkedChangeListener = new CompoundButton.OnCheckedChangeListener() {
|
|
@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);
|
|
}
|
|
}
|
|
};
|
|
}
|