package com.mcxtzhang.commonadapter.viewgroup.adapter.base; import android.content.Context; import android.database.DataSetObservable; import android.database.DataSetObserver; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import java.util.List; /** * 介绍:datas->View 的 Base Adapter * 整个设计的第二层,这里引入datas,实现IViewGroupAdapter的方法 * <p> * V1.7.0 版本加入,刷新方法 notifyDatasetChanged() * 作者:zhangxutong * 邮箱:mcxtzhang@163.com * 主页:http://blog.csdn.net/zxt0601 * 时间: 16/12/08. */ public abstract class BaseAdapter<T> implements IViewGroupAdapter { protected List<T> mDatas; protected Context mContext; protected LayoutInflater mInflater; protected DataSetObservable mDataSetObservable; public BaseAdapter(Context context, List<T> datas) { mDatas = datas; mContext = context; mInflater = LayoutInflater.from(mContext); mDataSetObservable = new DataSetObservable(); } @Override public void notifyDatasetChanged() { mDataSetObservable.notifyChanged(); } @Override public void registerDataSetObserver(DataSetObserver dataSetObserver) { mDataSetObservable.registerObserver(dataSetObserver); } @Override public void unregisterDataSetObserver(DataSetObserver dataSetObserver) { mDataSetObservable.unregisterObserver(dataSetObserver); } /** * ViewGroup调用获取ItemView,create bind一起做 * * @param parent * @param pos * @return */ @Override public View getView(ViewGroup parent, int pos) { return getView(parent, pos, mDatas.get(pos)); } /** * 实际的createItemView的地方 * * @param parent * @param pos * @param data * @return */ public abstract View getView(ViewGroup parent, int pos, T data); /** * ViewGroup调用,得到ItemCount * * @return */ @Override public int getCount() { return mDatas != null ? mDatas.size() : 0; } public List<T> getDatas() { return mDatas; } public BaseAdapter setDatas(List<T> datas) { mDatas = datas; return this; } }