// Path: library/src/main/java/com/freelib/multiitem/adapter/holder/InputHolderManager.java
// public abstract class InputHolderManager<T extends ItemInput> extends BaseViewHolderManager<T> {
//     protected Object originalValue;
//     protected BaseViewHolder viewHolder;
// 
//     /**
//      * 录入的key，和{@link #getValue()}一起组装为Map  如果为null则不组装 <br>
//      * 如果是复杂的录入可以直接覆写{@link #getValueMap()}自己组装key-value Map
//      *
//      * @return 录入key
//      */
//     public abstract String getKey();
// 
//     /**
//      * 录入的值，和{@link #getKey()}一起组装为Map  如果为null则不组装 <br>
//      * 如果是复杂的录入可以直接覆写{@link #getValueMap()}自己组装key-value Map
//      *
//      * @return 录入值
//      */
//     public abstract Object getValue();
// 
//     @Override
//     protected void onCreateViewHolder(@NonNull BaseViewHolder holder) {
//         super.onCreateViewHolder(holder);
//         initInputView(holder);
//         originalValue = getValue();
//         viewHolder = holder;
//     }
// 
//     /**
//      * 初始化Input视图，由于Input视图不可以复用，所以直接在初始化视图时设置好相关内容即可
//      *
//      * @param holder BaseViewHolder
//      */
//     protected abstract void initInputView(BaseViewHolder holder);
// 
//     @Deprecated
//     @Override
//     public void onBindViewHolder(BaseViewHolder holder, T t) {
//     }
// 
//     @Deprecated
//     @Override
//     public void onBindViewHolder(@NonNull BaseViewHolder holder, @NonNull T t, @NonNull ViewHolderParams params) {
//         super.onBindViewHolder(holder, t, params);
//     }
// 
//     /**
//      * 复杂业务可以覆写本方法，自定义返回多组key-value
//      *
//      * @return 录入的key-value Map
//      */
//     public Map<String, Object> getValueMap() {
//         String key = getKey();
//         Object value = getValue();
//         if (key == null || value == null) {
//             return null;
//         }
//         return Collections.singletonMap(key, value);
//     }
// 
//     /**
//      * 是否在初始化后发生改变，如用户手动更改<br>
//      * 在{@link #initInputView(BaseViewHolder)}的时候会记录当时的value，然后调用本方法时去做对比
//      *
//      * @return true:已改变；false:未改变
//      */
//     public boolean isValueChange() {
//         Object value = getValue();
//         return value == null ? null != originalValue : !value.equals(originalValue);
//     }
// 
//     /**
//      * 是否验证有效，如Item不能为空
//      *
//      * @return true:有效；false:无效  默认true
//      */
//     public boolean isValueValid() {
//         return true;
//     }
// 
// 
//     @Override
//     public boolean isClickable() {
//         return false;
//     }
// }


import com.freelib.multiitem.adapter.holder.InputHolderManager;
package com.freelib.multiitem.item;


/**
 * 录入Input Item接口
 * Created by free46000 on 2017/4/10.
 */
public interface ItemInput extends ItemManager {
    /**
     * 返回InputHolderManager
     *
     * @return InputHolderManager
     * @see InputHolderManager
     */
    @Override
// Path: library/src/main/java/com/freelib/multiitem/adapter/holder/InputHolderManager.java
// public abstract class InputHolderManager<T extends ItemInput> extends BaseViewHolderManager<T> {
//     protected Object originalValue;
//     protected BaseViewHolder viewHolder;
// 
//     /**
//      * 录入的key，和{@link #getValue()}一起组装为Map  如果为null则不组装 <br>
//      * 如果是复杂的录入可以直接覆写{@link #getValueMap()}自己组装key-value Map
//      *
//      * @return 录入key
//      */
//     public abstract String getKey();
// 
//     /**
//      * 录入的值，和{@link #getKey()}一起组装为Map  如果为null则不组装 <br>
//      * 如果是复杂的录入可以直接覆写{@link #getValueMap()}自己组装key-value Map
//      *
//      * @return 录入值
//      */
//     public abstract Object getValue();
// 
//     @Override
//     protected void onCreateViewHolder(@NonNull BaseViewHolder holder) {
//         super.onCreateViewHolder(holder);
//         initInputView(holder);
//         originalValue = getValue();
//         viewHolder = holder;
//     }
// 
//     /**
//      * 初始化Input视图，由于Input视图不可以复用，所以直接在初始化视图时设置好相关内容即可
//      *
//      * @param holder BaseViewHolder
//      */
//     protected abstract void initInputView(BaseViewHolder holder);
// 
//     @Deprecated
//     @Override
//     public void onBindViewHolder(BaseViewHolder holder, T t) {
//     }
// 
//     @Deprecated
//     @Override
//     public void onBindViewHolder(@NonNull BaseViewHolder holder, @NonNull T t, @NonNull ViewHolderParams params) {
//         super.onBindViewHolder(holder, t, params);
//     }
// 
//     /**
//      * 复杂业务可以覆写本方法，自定义返回多组key-value
//      *
//      * @return 录入的key-value Map
//      */
//     public Map<String, Object> getValueMap() {
//         String key = getKey();
//         Object value = getValue();
//         if (key == null || value == null) {
//             return null;
//         }
//         return Collections.singletonMap(key, value);
//     }
// 
//     /**
//      * 是否在初始化后发生改变，如用户手动更改<br>
//      * 在{@link #initInputView(BaseViewHolder)}的时候会记录当时的value，然后调用本方法时去做对比
//      *
//      * @return true:已改变；false:未改变
//      */
//     public boolean isValueChange() {
//         Object value = getValue();
//         return value == null ? null != originalValue : !value.equals(originalValue);
//     }
// 
//     /**
//      * 是否验证有效，如Item不能为空
//      *
//      * @return true:有效；false:无效  默认true
//      */
//     public boolean isValueValid() {
//         return true;
//     }
// 
// 
//     @Override
//     public boolean isClickable() {
//         return false;
//     }
// }


// Path: library/src/main/java/com/freelib/multiitem/item/ItemInput.java
import com.freelib.multiitem.adapter.holder.InputHolderManager;

package com.freelib.multiitem.item;


/**
 * 录入Input Item接口
 * Created by free46000 on 2017/4/10.
 */
public interface ItemInput extends ItemManager {
    /**
     * 返回InputHolderManager
     *
     * @return InputHolderManager
     * @see InputHolderManager
     */
    @Override
    InputHolderManager getViewHolderManager();