// Path: library/src/main/java/com/freelib/multiitem/adapter/holder/BaseViewHolder.java
// public class BaseViewHolder extends RecyclerView.ViewHolder {
//     public ViewHolderManager viewHolderManager;
//     public Object itemData;
// 
// 
//     public BaseViewHolder(View itemView) {
//         super(itemView);
//     }
// 
// 
//     public Object getItemData() {
//         return itemData;
//     }
// 
//     /**
//      * header和footer的个数也计算在内
//      * {@link #getAdapterPosition()}
//      */
//     public int getItemPosition() {
//         return getAdapterPosition();
//     }
// 
//     public ViewHolderManager getViewHolderManager() {
//         return viewHolderManager;
//     }
// 
// }
// 
// Path: library/src/main/java/com/freelib/multiitem/item/BaseItemInput.java
// public abstract class BaseItemInput<T extends BaseItemInput> extends InputHolderManager<T> implements ItemInput {
//     protected String key;
// 
//     /**
//      * @param key 录入对应key
//      */
//     public BaseItemInput(String key) {
//         this.key = key;
//     }
// 
// 
//     @NonNull
//     @Override
//     public String getItemTypeName() {
//         return toString();
//     }
// 
//     @Override
//     public InputHolderManager getViewHolderManager() {
//         return this;
//     }
// 
//     @Override
//     public String getKey() {
//         return key;
//     }
// 
// }


import android.text.TextUtils;
import android.widget.EditText;
import android.widget.RadioGroup;
import com.freelib.multiitem.adapter.holder.BaseViewHolder;
import com.freelib.multiitem.demo.R;
import com.freelib.multiitem.item.BaseItemInput;
import java.util.HashMap;
import java.util.Map;
        //在本方法中返回两个值的组合，作用是为判断表单的值是否被改变提供依据
        //也可以直接覆写isValueChange()方法达到定制化
        if (nameEdit == null) {
            return null;
        }
        return nameEdit.getText().toString() + sexRadio.getCheckedRadioButtonId();
    }

    @Override
    public boolean isValueValid() {
        //如果名字输入框录入的值不为空则有效；其它无效
        return nameEdit != null && !TextUtils.isEmpty(nameEdit.getText().toString());
    }

    @Override
    public Map<String, Object> getValueMap() {
        if (nameEdit == null) {
            return null;
        }

        //此处自己组装Map{name:name,sex:sex}并返回，这样可以达到一个Item返回两组值的效果
        Map<String, Object> valueMap = new HashMap<>(2);
        valueMap.put("name", nameEdit.getText().toString());
        int sexStrResId = sexRadio.getCheckedRadioButtonId() == R.id.man ? R.string.man : R.string.woman;
        valueMap.put("sex", nameEdit.getContext().getString(sexStrResId));

        return valueMap;
    }

    @Override
// Path: library/src/main/java/com/freelib/multiitem/adapter/holder/BaseViewHolder.java
// public class BaseViewHolder extends RecyclerView.ViewHolder {
//     public ViewHolderManager viewHolderManager;
//     public Object itemData;
// 
// 
//     public BaseViewHolder(View itemView) {
//         super(itemView);
//     }
// 
// 
//     public Object getItemData() {
//         return itemData;
//     }
// 
//     /**
//      * header和footer的个数也计算在内
//      * {@link #getAdapterPosition()}
//      */
//     public int getItemPosition() {
//         return getAdapterPosition();
//     }
// 
//     public ViewHolderManager getViewHolderManager() {
//         return viewHolderManager;
//     }
// 
// }
// 
// Path: library/src/main/java/com/freelib/multiitem/item/BaseItemInput.java
// public abstract class BaseItemInput<T extends BaseItemInput> extends InputHolderManager<T> implements ItemInput {
//     protected String key;
// 
//     /**
//      * @param key 录入对应key
//      */
//     public BaseItemInput(String key) {
//         this.key = key;
//     }
// 
// 
//     @NonNull
//     @Override
//     public String getItemTypeName() {
//         return toString();
//     }
// 
//     @Override
//     public InputHolderManager getViewHolderManager() {
//         return this;
//     }
// 
//     @Override
//     public String getKey() {
//         return key;
//     }
// 
// }


// Path: demo/src/main/java/com/freelib/multiitem/demo/input/ItemNameAndSex.java
import android.text.TextUtils;
import android.widget.EditText;
import android.widget.RadioGroup;
import com.freelib.multiitem.adapter.holder.BaseViewHolder;
import com.freelib.multiitem.demo.R;
import com.freelib.multiitem.item.BaseItemInput;
import java.util.HashMap;
import java.util.Map;

        //在本方法中返回两个值的组合，作用是为判断表单的值是否被改变提供依据
        //也可以直接覆写isValueChange()方法达到定制化
        if (nameEdit == null) {
            return null;
        }
        return nameEdit.getText().toString() + sexRadio.getCheckedRadioButtonId();
    }

    @Override
    public boolean isValueValid() {
        //如果名字输入框录入的值不为空则有效；其它无效
        return nameEdit != null && !TextUtils.isEmpty(nameEdit.getText().toString());
    }

    @Override
    public Map<String, Object> getValueMap() {
        if (nameEdit == null) {
            return null;
        }

        //此处自己组装Map{name:name,sex:sex}并返回，这样可以达到一个Item返回两组值的效果
        Map<String, Object> valueMap = new HashMap<>(2);
        valueMap.put("name", nameEdit.getText().toString());
        int sexStrResId = sexRadio.getCheckedRadioButtonId() == R.id.man ? R.string.man : R.string.woman;
        valueMap.put("sex", nameEdit.getContext().getString(sexStrResId));

        return valueMap;
    }

    @Override
    protected void initInputView(BaseViewHolder holder) {