| 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(); | 
|     } | 
| } |