package com.dreamspace.uucampus.adapter.base;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import java.util.List;
/**
* Created by Administrator on 2015/8/3 0003.
*/
public abstract class BasisAdapter<T, K> extends BaseAdapter {
private List<T> mEntities;
private Context mContext;
private Class<K> classType;
public void setmEntities(List<T> mEntities) {
this.mEntities = mEntities;
}
public void addEntities(List<T> mEntities){
this.mEntities.addAll(mEntities);
}
public BasisAdapter(Context mContext, List<T> mEntities, Class<K> classType) {
this.mContext = mContext;
this.mEntities = mEntities;
this.classType = classType;
}
@Override
public int getCount() {
return mEntities.size();
}
@Override
public T getItem(int position) {
return mEntities.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
K holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(getItemLayout(), parent, false);
try {
holder = classType.newInstance();
Log.i("INFO", "Complete");
} catch (InstantiationException e) {
Log.i("INFO", "InstantiationException");
e.printStackTrace();
} catch (IllegalAccessException e) {
Log.i("INFO", "IllegalAccessException");
e.printStackTrace();
}
initViewHolder(convertView, holder);
convertView.setTag(holder);
} else {
holder = (K) convertView.getTag();
}
T entity = mEntities.get(position);
setDataIntoView(holder, entity);
return convertView;
}
protected abstract void setDataIntoView(K holder, T entity);
protected abstract void initViewHolder(View convertView, K holder);
public abstract int getItemLayout();
public void removeItem(int position) {
// Animation animation= AnimationUtils.loadAnimation(mContext,android.R.anim.slide_out_right);
// view.startAnimation(animation);
mEntities.remove(position);
notifyDataSetChanged();
// new Handler().postDelayed(new Runnable() {
// @Override
// public void run() {
// mEntities.remove(position);
// notifyDataSetChanged();
// }
// },2000);
}
public Context getmContext() {
return mContext;
}
public List<T> getmEntities(){
return mEntities;
}
}