Android Adapter简单封装
CommonAdapter类
import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; /** * author: * email:j * 类说明 * @param <T> */ public abstract class CommonAdapter<T> extends BaseAdapter { protected List<T> mDatas; protected LayoutInflater mInflater; protected Context mContext; protected int layoutId; public CommonAdapter(Context ctx,List<T> lists,int layoutId){ this.mDatas=lists; mInflater=(LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.mContext=ctx; this.layoutId=layoutId; } @Override public int getCount() { return mDatas.size(); } @Override public Object getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder vh=ViewHolder.getViewHolder(convertView, mContext, parent, layoutId, position); convert(vh, mDatas.get(position)); return vh.getConvertView(); } abstract protected void convert(ViewHolder vh,T item); }
ViewHolder类
import android.content.Context; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /** * author: * email: * 类说明 */ public class ViewHolder { private final SparseArray<View> mView; private View mConvertView; public ViewHolder(Context context, ViewGroup parent, int layoutId, int position){ this.mView=new SparseArray<View>(); mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false); mConvertView.setTag(this); }; /** * 获得viewholder * @param convertView * @param context * @param parent * @param layoutId * @param position * @return */ public static ViewHolder getViewHolder(View convertView,Context context,ViewGroup parent, int layoutId, int position){ if(null==convertView){ return new ViewHolder(context, parent, layoutId, position); } return (ViewHolder) convertView.getTag(); } /** * @param id * @return */ public <T extends View> T getView(int id){ View view=mView.get(id); if(null==view){ view=mConvertView.findViewById(id); mView.put(id,view); } return (T)view; } public View getConvertView(){ return mConvertView; } }
嗯,就这两个类,可以任意继承拓展。

浙公网安备 33010602011771号