importación android.content.Context ; importación android.graphics.Bitmap ; importación android.util.SparseArray ; importación android.view.LayoutInflater ; importación android.view.View ; importación android.view.ViewGroup ; importación android.widget.BaseAdapter ; importación android.widget.ImageView ; importación android.widget.TextView ; importación java.util. lista ; clase abstracta pública LvCommonAdapter < T > extiende BaseAdapter { protegida LayoutInflater mInflater ; protegida Contexto mContext ; protegidas Lista < T > mDatas ; final protegido int mItemLayoutId ; pública LvCommonAdapter (contexto Contexto , int itemLayoutId , Lista < T > mDatas) { esto . mContext = contexto ; esta . mInflater = LayoutInflater. de ( mContext ) ; esta . mDatas = mDatas ; esta . mItemLayoutId = itemLayoutId ; } @Override public int getCount () { retorno mDatas .size () ; } @ Override pública T getItem ( int posición) { retorno mDatas .get (posición) ; } @ Override pública a largo GetItemID ( int posición) { retorno de posición ; } @ Override pública Ver getView ( int posición , Ver convertView , ViewGroup padre) { definitiva ViewHolder viewHolder = getViewHolder (posición , convertView , los padres) ; convert (viewHolder , getItem (posición)) ; volver viewHolder.getConvertView () ; } Public abstract void convertido (ayudante ViewHolder , T artículo) ; privada ViewHolder getViewHolder ( int posición , Ver convertView , ViewGroup padre) { volver ViewHolder. obtener ( mContext , convertView , padres , mItemLayoutId , posición) ; } / ** *内部类 ViewHolder * / public static class ViewHolder { privados finales SparseArray <Ver> mViews ; private int mPosition ; privada Ver mConvertView ; privada ViewHolder (Contexto Contexto , ViewGroup matriz , int layoutId , int posición) { esto . mPosition = posición ; esta . mViews = nueva SparseArray <Ver> () ; mConvertView = LayoutInflater. de (contexto) .inflate (layoutId , padres , falsa ) ; mConvertView .setTag ( este ) ; } / ** *拿到一个ViewHolder对象 * / public static ViewHolder get (El contexto Contexto , Ver convertView , el padre ViewGroup , int layoutId , int posición) { SI (convertView == nula ) { return new nueva ViewHolder (contexto , los padres , layoutId , posición) ; } retorno (ViewHolder) convertView.getTag () ; } pública Vista getConvertView () { volver mConvertView ; } / ** * Obtiene el identificador del control por el control, si no, entonces añadido vistas * / Público < T se extiende Ver> T getView ( int viewId) { Ver ver = mViews .get (viewId) ; si (vista == nula ) { view = mConvertView .findViewById (viewId) ; mViews .Put (viewId , vista) ; } Devolver ( T vista) ; } / ** *为TextView设置字符串 * / público ViewHolder setText ( Int viewId , texto String) { el TextView Ver las getView = (viewId) ; view.setText (texto) ; devolver el este; } / ** * Establecer el recurso es la imagen ImageView * / público ViewHolder setImageResource ( int viewId , int drawableId) { ImageView = la getView Ver (viewId) ; view.setImageResource (drawableId) ; devolver el este; } / ** * establecer el ImageView mapa de bits de imagen * / público ViewHolder setImageBitmap ( int viewId , Bitmap BM) { ImageView Ver las getView = (viewId) ; view.setImageBitmap (BM) ; devolver el este; } ** / * URL de la imagen Conjunto THHP del ImageView * / público ViewHolder setImageByUrl ( int viewId , String URL ) { // la carga ImageLoader imagen (. 3, Type.LIFO) .loadImage (URL, (el ImageView) // ImageLoader.getInstance la getView (viewId)); // imagen carga Glide dispuesto de compilación 'com.github.bumptech.glide: Glide : 3.8.0 ' // Glide.with (contexto) .load (url) .into (vista); devolver este; } Public int getPosition () { retorno mPosition ; } } }
uso:
Tipo de datos del estudiante, tenga que pasar en función del tipo de necesidad.
LvCommonAdapter mAdapter = new LvCommonAdapter<Student>(CardListActivity.this, R.layout.item_card, datas) { @Override public void convert(ViewHolder helper, Student item) { helper.setText(R.id.name, item.getName()); helper.setText(R.id.address, item.getAddress()); } }; mylistView.setAdapter(mAdapter);