美文网首页Android小牛
Android Adapter缓存

Android Adapter缓存

作者: zhangxuanchen | 来源:发表于2017-04-27 12:00 被阅读2次
    import android.content.Context;
    import android.util.SparseArray;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import java.util.List;
    
    public abstract class AbsBaseAdapter<T> extends BaseAdapter {
        protected List<T> mList;
        protected Context context;
        public AbsBaseAdapter(Context context, List<T> list) {
            mList = list;
            this.context = context;
        }
    
        @Override
        public int getCount() {
            return mList.size();
        }
    
        @Override
        public T getItem(int position) {
            return mList.get(position);
        }
    
        @Override
        public long getItemId(int position) {
            return position;
        }
    
    
        static public class ViewHolder {
            private final SparseArray<View> views;
            private View convertView;
            
            private ViewHolder(Context context, View convertView, ViewGroup parent, int layoutId) {
                views = new SparseArray<View>();
                this.convertView = LayoutInflater.from(context).inflate(layoutId, parent, false);
                this.convertView.setTag(this);
            }
            private ViewHolder(View v){
                views = new SparseArray<View>();
                this.convertView = v;
            }
            static public ViewHolder getInstance(Context context, View convertView, ViewGroup parent, int layoutId){
                if(convertView==null){
                    ViewHolder holder = new ViewHolder(context, convertView, parent, layoutId);
                    return holder;
                }else{
                    return (ViewHolder) convertView.getTag();
                }
            }
            static public ViewHolder getInstance(View v){
                    ViewHolder holder = new ViewHolder(v);
                    return holder;
            }
            public View getView(){
                return convertView;
            }
    
            @SuppressWarnings("unchecked")
            public <T extends View> T getView(int viewId) {
                View view = views.get(viewId);
                if (view == null) {
                    view = convertView.findViewById(viewId);
                    views.put(viewId, view);
                }
                return (T) view;
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:Android Adapter缓存

        本文链接:https://www.haomeiwen.com/subject/ydwlgttx.html