// Path: commonadapter/src/main/java/io/github/anotherme17/commonadapter/BaseMultiAdapter.java
// public class BaseMultiAdapter<T> extends BaseAdapter {
//     private static final String TAG = "BaseMultiAdapter";
// 
//     protected Context mContext;
//     protected List<T> mDatas;
// 
//     protected ItemViewManager<T> mViewManager;
// 
//     public BaseMultiAdapter(Context context, List<T> datas) {
//         this.mContext = context;
//         this.mDatas = datas;
//         mViewManager = new ItemViewManager<>();
//     }
// 
//     public BaseMultiAdapter(Context context, List<T> datas, List<Integer> typeIds) {
//         this(context, datas);
//         mViewManager.addMapTab(typeIds);
//     }
// 
//     public BaseMultiAdapter(Context context, List<T> datas, int[] typeIds) {
//         this(context, datas);
//         mViewManager.addMapTab(typeIds);
//     }
// 
//     public void addSignalItem(T data, int position) {
//         mDatas.add(position, data);
//         notifyDataSetChanged();
//     }
// 
//     public void addMultiItem(T data, int typeId, int position) {
//         mDatas.add(position, data);
//         mViewManager.addMapTab(typeId, position);
//         notifyDataSetChanged();
//     }
// 
//     protected void setSignalMode(int typeId) {
//         mViewManager.isSignal = true;
//         mViewManager.signalId = typeId;
//     }
// 
//     protected void setMultiMode() {
//         mViewManager.isSignal = false;
//         mViewManager.signalId = 0;
//     }
// 
//     protected void addItemViewType(int typeId) {
//         mViewManager.addMapTab(typeId);
//     }
// 
//     protected void addItemViewType(int typeId, int position) {
//         mViewManager.addMapTab(typeId, position);
//     }
// 
//     public void addItemViewDegelate(ItemViewDelegate<T> viewDelegate) {
//         mViewManager.addDelegate(viewDelegate);
//     }
// 
//     public int getItemViewDegelateSize() {
//         return mViewManager.getDelegateCount();
//     }
// 
//     public ItemViewDelegate<T> getItemViewDegelate(int position) {
//         return mViewManager.getItemViewDelegate(position);
//     }
// 
//     @Override
//     public int getCount() {
//         return mDatas.size();
//     }
// 
//     @Override
//     public T getItem(int position) {
//         return mDatas.get(position);
//     }
// 
//     @Override
//     public long getItemId(int position) {
//         return position;
//     }
// 
//     @Override
//     public int getViewTypeCount() {
//         return getItemViewDegelateSize();
//     }
// 
//     @Override
//     public int getItemViewType(int position) {
//         return mViewManager.getItemViewType(position);
//     }
// 
//     @Override
//     public View getView(int position, View convertView, ViewGroup parent) {
//         ItemViewDelegate<T> viewDelegate = getItemViewDegelate(position);
//         int layoutId = viewDelegate.getItemLayoutId();
//         ViewHolder viewHolder = null;
//         if (convertView == null) {
//             View view = LayoutInflater.from(mContext).inflate(layoutId, parent, false);
//             viewHolder = new ViewHolder(mContext, view, parent, position);
//             viewHolder.mLayoutId = layoutId;
//             viewDelegate.onViewHolderCreated(mContext, view, mDatas.get(position), position);
//         } else {
//             viewHolder = (ViewHolder) convertView.getTag();
//             viewHolder.mPosition = position;
//         }
//         viewDelegate.convert(mContext, viewHolder, mDatas.get(position), position);
//         //convert(viewHolder, mDatas.get(position), position);
// 
//         return viewHolder.getConvertView();
//     }
// 
// }
// 
// Path: commonadapter/src/main/java/io/github/anotherme17/commonadapter/ItemViewDelegate.java
// public interface ItemViewDelegate<T> {
// 
//     public abstract
//     @LayoutRes
//     int getItemLayoutId();
// 
//     public abstract int getItemViewId();
// 
//     public abstract void onViewHolderCreated(Context context, View view, T data, int position);
// 
//     public abstract void convert(Context context, ViewHolder viewHolder, T data, int position);
// }


import android.content.Context;
import android.widget.ListView;
import java.util.List;
import io.github.anotherme17.commonadapter.BaseMultiAdapter;
import io.github.anotherme17.commonadapter.ItemViewDelegate;
package io.github.anotherme17.commonadapter.common;




/**
 * 项目名称：CommonAdapterSample
 * 类描述：
 * 创建人：renhao
 * 创建时间：2016/11/21 14:55
 * 修改备注：
 */
public class CommonAdapterUitl<T> extends BaseMultiAdapter<T> {

    public CommonAdapterUitl(Context context, List<T> datas) {
        super(context, datas);
    }

    public CommonAdapterUitl(Context context, List<T> datas, int[] typeIds) {
        super(context, datas, typeIds);
    }

    public CommonAdapterUitl(Context context, List<T> datas, List<Integer> typeIds) {
        super(context, datas, typeIds);
    }

    public static class Builder<T> {
        private CommonAdapterUitl<T> mAdapter;

        public Builder<T> createSignalAdapter(Context context, List<T> datas, ItemViewDelegate<T> viewDelegate) {
            mAdapter = new CommonAdapterUitl<T>(context, datas);
            mAdapter.addItemViewDegelate(viewDelegate);
            mAdapter.setSignalMode(viewDelegate.getItemViewId());
            return this;
        }

        public Builder<T> createMultiAdapter(Context context, List<T> datas, List<Integer> typeIds) {
            mAdapter = new CommonAdapterUitl<T>(context, datas, typeIds);
            mAdapter.setMultiMode();
            return this;
        }

// Path: commonadapter/src/main/java/io/github/anotherme17/commonadapter/BaseMultiAdapter.java
// public class BaseMultiAdapter<T> extends BaseAdapter {
//     private static final String TAG = "BaseMultiAdapter";
// 
//     protected Context mContext;
//     protected List<T> mDatas;
// 
//     protected ItemViewManager<T> mViewManager;
// 
//     public BaseMultiAdapter(Context context, List<T> datas) {
//         this.mContext = context;
//         this.mDatas = datas;
//         mViewManager = new ItemViewManager<>();
//     }
// 
//     public BaseMultiAdapter(Context context, List<T> datas, List<Integer> typeIds) {
//         this(context, datas);
//         mViewManager.addMapTab(typeIds);
//     }
// 
//     public BaseMultiAdapter(Context context, List<T> datas, int[] typeIds) {
//         this(context, datas);
//         mViewManager.addMapTab(typeIds);
//     }
// 
//     public void addSignalItem(T data, int position) {
//         mDatas.add(position, data);
//         notifyDataSetChanged();
//     }
// 
//     public void addMultiItem(T data, int typeId, int position) {
//         mDatas.add(position, data);
//         mViewManager.addMapTab(typeId, position);
//         notifyDataSetChanged();
//     }
// 
//     protected void setSignalMode(int typeId) {
//         mViewManager.isSignal = true;
//         mViewManager.signalId = typeId;
//     }
// 
//     protected void setMultiMode() {
//         mViewManager.isSignal = false;
//         mViewManager.signalId = 0;
//     }
// 
//     protected void addItemViewType(int typeId) {
//         mViewManager.addMapTab(typeId);
//     }
// 
//     protected void addItemViewType(int typeId, int position) {
//         mViewManager.addMapTab(typeId, position);
//     }
// 
//     public void addItemViewDegelate(ItemViewDelegate<T> viewDelegate) {
//         mViewManager.addDelegate(viewDelegate);
//     }
// 
//     public int getItemViewDegelateSize() {
//         return mViewManager.getDelegateCount();
//     }
// 
//     public ItemViewDelegate<T> getItemViewDegelate(int position) {
//         return mViewManager.getItemViewDelegate(position);
//     }
// 
//     @Override
//     public int getCount() {
//         return mDatas.size();
//     }
// 
//     @Override
//     public T getItem(int position) {
//         return mDatas.get(position);
//     }
// 
//     @Override
//     public long getItemId(int position) {
//         return position;
//     }
// 
//     @Override
//     public int getViewTypeCount() {
//         return getItemViewDegelateSize();
//     }
// 
//     @Override
//     public int getItemViewType(int position) {
//         return mViewManager.getItemViewType(position);
//     }
// 
//     @Override
//     public View getView(int position, View convertView, ViewGroup parent) {
//         ItemViewDelegate<T> viewDelegate = getItemViewDegelate(position);
//         int layoutId = viewDelegate.getItemLayoutId();
//         ViewHolder viewHolder = null;
//         if (convertView == null) {
//             View view = LayoutInflater.from(mContext).inflate(layoutId, parent, false);
//             viewHolder = new ViewHolder(mContext, view, parent, position);
//             viewHolder.mLayoutId = layoutId;
//             viewDelegate.onViewHolderCreated(mContext, view, mDatas.get(position), position);
//         } else {
//             viewHolder = (ViewHolder) convertView.getTag();
//             viewHolder.mPosition = position;
//         }
//         viewDelegate.convert(mContext, viewHolder, mDatas.get(position), position);
//         //convert(viewHolder, mDatas.get(position), position);
// 
//         return viewHolder.getConvertView();
//     }
// 
// }
// 
// Path: commonadapter/src/main/java/io/github/anotherme17/commonadapter/ItemViewDelegate.java
// public interface ItemViewDelegate<T> {
// 
//     public abstract
//     @LayoutRes
//     int getItemLayoutId();
// 
//     public abstract int getItemViewId();
// 
//     public abstract void onViewHolderCreated(Context context, View view, T data, int position);
// 
//     public abstract void convert(Context context, ViewHolder viewHolder, T data, int position);
// }


// Path: commonadapter/src/main/java/io/github/anotherme17/commonadapter/common/CommonAdapterUitl.java
import android.content.Context;
import android.widget.ListView;
import java.util.List;
import io.github.anotherme17.commonadapter.BaseMultiAdapter;
import io.github.anotherme17.commonadapter.ItemViewDelegate;

package io.github.anotherme17.commonadapter.common;




/**
 * 项目名称：CommonAdapterSample
 * 类描述：
 * 创建人：renhao
 * 创建时间：2016/11/21 14:55
 * 修改备注：
 */
public class CommonAdapterUitl<T> extends BaseMultiAdapter<T> {

    public CommonAdapterUitl(Context context, List<T> datas) {
        super(context, datas);
    }

    public CommonAdapterUitl(Context context, List<T> datas, int[] typeIds) {
        super(context, datas, typeIds);
    }

    public CommonAdapterUitl(Context context, List<T> datas, List<Integer> typeIds) {
        super(context, datas, typeIds);
    }

    public static class Builder<T> {
        private CommonAdapterUitl<T> mAdapter;

        public Builder<T> createSignalAdapter(Context context, List<T> datas, ItemViewDelegate<T> viewDelegate) {
            mAdapter = new CommonAdapterUitl<T>(context, datas);
            mAdapter.addItemViewDegelate(viewDelegate);
            mAdapter.setSignalMode(viewDelegate.getItemViewId());
            return this;
        }

        public Builder<T> createMultiAdapter(Context context, List<T> datas, List<Integer> typeIds) {
            mAdapter = new CommonAdapterUitl<T>(context, datas, typeIds);
            mAdapter.setMultiMode();
            return this;
        }

        public Builder<T> addItemDegelate(ItemViewDelegate<T> viewDelegate) {