package com.doumee.lib_coremodel.binding.command; /** * About : kelin的ReplyCommand * 执行的命令回调, 用于ViewModel与xml之间的数据绑定 */ public class BindingCommand { private BindingAction execute; private BindingPAction pAction; private BindingConsumer consumer; private BindingFunction canExecute0; public BindingCommand(BindingAction execute) { this.execute = execute; } public BindingCommand(BindingPAction pAction) { this.pAction = pAction; } /** * @param execute 带泛型参数的命令绑定 */ public BindingCommand(BindingConsumer execute) { this.consumer = execute; } /** * @param execute 触发命令 * @param canExecute0 true则执行,反之不执行 */ public BindingCommand(BindingAction execute, BindingFunction canExecute0) { this.execute = execute; this.canExecute0 = canExecute0; } /** * @param execute 带泛型参数触发命令 * @param canExecute0 true则执行,反之不执行 */ public BindingCommand(BindingConsumer execute, BindingFunction canExecute0) { this.consumer = execute; this.canExecute0 = canExecute0; } /** * 执行BindingAction命令 */ public void execute() { if (execute != null && canExecute0()) { execute.call(); } } public void execute(Object... objects){ if(pAction!=null&& canExecute0()){ pAction.call(objects); } } /** * 执行带泛型参数的命令 * * @param parameter 泛型参数 */ public void execute(T parameter) { if (consumer != null && canExecute0()) { consumer.call(parameter); } } /** * 是否需要执行 * * @return true则执行, 反之不执行 */ private boolean canExecute0() { if (canExecute0 == null) { return true; } return canExecute0.call(); } }