import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import java.util.ArrayList;
/**
* Created by capton on 2017/6/19.
*/
public abstract class CommonAdapter<T> extends BaseAdapter {
public Context context;
private ArrayList<T> dataList;
private int resId;
public CommonAdapter(Context context,ArrayList<T> dataList,int resId) {
this.context = context;
this.resId=resId;
this.dataList = dataList;
}
@Override
public int getCount() {
return dataList.size();
}
@Override
public Object getItem(int position) {
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
ViewHolder viewHolder=ViewHolder.bind(context,convertView,parent,resId,position);
bindView(viewHolder, (T) getItem(position));
return viewHolder.getItemView();
}
public abstract void bindView(ViewHolder viewHolder,T obj);
public void add(T t){
dataList.add(t);
notifyDataSetChanged();
}
public void add(T t,int index){
dataList.add(index,t);
notifyDataSetChanged();
}
public void remove(T t){
dataList.remove(t);
notifyDataSetChanged();
}
public void remove(int index){
dataList.remove(index);
notifyDataSetChanged();
}
public static class ViewHolder {
private Context context;
private View convertView;
private int position;
private SparseArray<View> mViews;
private ViewHolder(Context context,ViewGroup parent,int layoutRes){
mViews=new SparseArray<>();
this.context=context;
convertView=LayoutInflater.from(context).inflate(layoutRes,parent,false);
convertView.setTag(this);
}
public static ViewHolder bind(Context context,View convertView,ViewGroup parent,int layoutRes,int position){
ViewHolder viewHolder;
if(convertView==null){
viewHolder=new ViewHolder(context,parent,layoutRes);
}else {
viewHolder= (ViewHolder) convertView.getTag();
viewHolder.convertView=convertView;
}
viewHolder.position=position;
return viewHolder;
}
public ViewHolder setText(int id,CharSequence text){
View textView=getView(id);
if(textView instanceof TextView){
((TextView)textView).setText(text);
}
return this;
}
public ViewHolder setImageResource(int id,int drawableRes){
View imageView=getView(id);
if(imageView instanceof ImageView){
((ImageView)imageView).setImageResource(drawableRes);
}else {
imageView.setBackgroundResource(drawableRes);
}
return this;
}
public ViewHolder setImageUrl(int id,String url){
View imageView=getView(id);
if(imageView instanceof ImageView){
Glide.with(context).load(url).into(((ImageView)imageView));
}
return this;
}
public ViewHolder setOnClickListener(int id,View.OnClickListener listener){
getView(id).setOnClickListener(listener);
return this;
}
public ViewHolder setTag(int id,Object obj){
getView(id).setTag(obj);
return this;
}
public <T extends View> T getView(int id){
T t= (T) mViews.get(id);
if(t==null){
t= (T) convertView.findViewById(id);
mViews.put(id,t);
}
return t;
}
public View getItemView(){
return convertView;
}
}
}
Android通用数据适配器源码CommonAdapter
猜你喜欢
转载自blog.csdn.net/ccapton/article/details/73478056
今日推荐
周排行