package com.doumee.lib_coremodel.binding.command;
|
|
|
/**
|
* About : kelin的ReplyCommand
|
* 执行的命令回调, 用于ViewModel与xml之间的数据绑定
|
*/
|
public class BindingCommand<T> {
|
private BindingAction execute;
|
private BindingPAction pAction;
|
private BindingConsumer<T> consumer;
|
private BindingFunction<Boolean> canExecute0;
|
|
public BindingCommand(BindingAction execute) {
|
this.execute = execute;
|
}
|
|
public BindingCommand(BindingPAction pAction) {
|
this.pAction = pAction;
|
}
|
|
/**
|
* @param execute 带泛型参数的命令绑定
|
*/
|
public BindingCommand(BindingConsumer<T> execute) {
|
this.consumer = execute;
|
}
|
|
/**
|
* @param execute 触发命令
|
* @param canExecute0 true则执行,反之不执行
|
*/
|
public BindingCommand(BindingAction execute, BindingFunction<Boolean> canExecute0) {
|
this.execute = execute;
|
this.canExecute0 = canExecute0;
|
}
|
|
/**
|
* @param execute 带泛型参数触发命令
|
* @param canExecute0 true则执行,反之不执行
|
*/
|
public BindingCommand(BindingConsumer<T> execute, BindingFunction<Boolean> 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();
|
}
|
}
|