Android安卓万能适配器adpter和viewholder

来源:互联网 发布:淘宝联盟提现的日期 编辑:程序博客网 时间:2024/04/30 11:20

最近北京辞职  准备南下之余   别TMD叫我打撸阿撸 哥要进步 嘛蛋  有空可以来玩一把 如果你是 战争学院 那么请记住  我的ID   恐布分子  求双黑!!1


顺便把主要代码展现出来 展示尊重效果!



写法demo 

demo的下载地址

点一下也不会怀孕下载看看也不要积分


public abstract class CommonAdapter<T> extends android.widget.BaseAdapter {    protected final Context mContext;    protected final int mLayoutId;    protected List<T> mItems;    public CommonAdapter(Context context) {        this(context, -1, null);    }    public CommonAdapter(Context context, int layoutId) {        this(context, layoutId, null);    }    public CommonAdapter(Context context, int layoutId, List<T> items) {        mContext = context;        mLayoutId = layoutId;        mItems = items == null ? new ArrayList<T>() : new ArrayList<T>(items);    }    public Context getContext() {        return mContext;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        final ViewHolder holder = getViewHolder(position, convertView, parent);        convert(holder, position, getItem(position));        return holder.getConvertView();    }    protected ViewHolder getViewHolder(int position, View convertView, ViewGroup parent) {        if (mLayoutId == -1) throw new IllegalArgumentException("mLayoutId == -1");        return ViewHolder.get(mContext, convertView, parent, mLayoutId, position);    }    protected abstract void convert(ViewHolder holder, int position, T item);    @Override    public int getCount() {        return mItems.size();    }    @Override    public T getItem(int position) {        if (position >= mItems.size()) return null;        return mItems.get(position);    }    public List<T> getItems() {        return mItems;    }    public void setItems(List<T> items) {        this.mItems = items;        notifyDataSetChanged();    }    @Override    public long getItemId(int position) {        return position;    }    public void add(T item) {        mItems.add(item);        notifyDataSetChanged();    }    public void addAll(List<T> items) {        mItems.addAll(items);        notifyDataSetChanged();    }    public void addAll(int index, List<T> items) {        mItems.addAll(index, items);        notifyDataSetChanged();    }    public void set(T oldItem, T newItem) {        set(mItems.indexOf(oldItem), newItem);    }    public void set(int index, T item) {        mItems.set(index, item);        notifyDataSetChanged();    }    public void remove(T item) {        mItems.remove(item);        notifyDataSetChanged();    }    public void remove(int index) {        mItems.remove(index);        notifyDataSetChanged();    }    public void replaceAll(List<T> items) {        mItems.clear();        mItems.addAll(items);        notifyDataSetChanged();    }    public boolean contains(T item) {        return mItems.contains(item);    }    /**     * Clear data list     */    public void clear() {        mItems.clear();        notifyDataSetChanged();    }}

public final class ViewHolder {    private final Context mContext;    private final SparseArray<View> mViews;    private final View mConvertView;    private final int mPosition;    protected ViewHolder(Context context, ViewGroup parent, int layoutId, int position) {        mContext = context;        mViews = new SparseArray<View>();        mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false);        mConvertView.setTag(layoutId, this);        mPosition = position;    }    public static ViewHolder get(Context context, View convertView, ViewGroup parent, int layoutId, int position) {        if (convertView == null)            return new ViewHolder(context, parent, layoutId, position);        return (ViewHolder) convertView.getTag(layoutId);    }    public <T extends View> T findViewById(int viewId) {        return getView(viewId);    }    @SuppressWarnings("unchecked")    public <T extends View> T getView(int viewId) {        View view = mViews.get(viewId);        if (view == null) {            view = mConvertView.findViewById(viewId);            mViews.put(viewId, view);        }        return (T) view;    }    public View getConvertView() {        return mConvertView;    }    public int getPosition() {        return mPosition;    }    public ViewHolder setText(int viewId, CharSequence text) {        TextView view = getView(viewId);        if (view != null && text != null)            view.setText(text);        return this;    }    public String getText(int viewId) {        TextView view = getView(viewId);        if (view != null) {            return view.getText().toString();        }        return "";    }    public ViewHolder setTextColor(int viewId, int color) {        TextView view = getView(viewId);        if (view != null)            view.setTextColor(color);        return this;    }    public ViewHolder setTextColorResource(int viewId, int colorRes) {        TextView view = getView(viewId);        if (view != null)            view.setTextColor(mContext.getResources().getColor(colorRes));        return this;    }    public ViewHolder setBackgroundColor(int viewId, int color) {        View view = getView(viewId);        if (view != null)            view.setBackgroundColor(color);        return this;    }    public ViewHolder setBackgroundResource(int viewId, int resId) {        ImageView view = getView(viewId);        if (view != null)            view.setBackgroundResource(resId);        return this;    }    public ViewHolder setImageDrawable(int viewId, Drawable drawable) {        ImageView view = getView(viewId);        if (view != null)            view.setImageDrawable(drawable);        return this;    }    public ViewHolder setImageResource(int viewId, int imageRes) {        ImageView view = getView(viewId);        if (view != null)            view.setImageResource(imageRes);        return this;    }    public ViewHolder setImageBitmap(int viewId, Bitmap bitmap) {        ImageView view = getView(viewId);        if (view != null)            view.setImageBitmap(bitmap);        return this;    }    public ViewHolder setAlpha(int viewId, float value) {        View view = getView(viewId);        if (view == null) return this;        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {            view.setAlpha(value);        } else {            // Pre-honeycomb hack to set Alpha value            AlphaAnimation alpha = new AlphaAnimation(value, value);            alpha.setDuration(0);            alpha.setFillAfter(true);            view.startAnimation(alpha);        }        return this;    }    public ViewHolder setVisible(int viewId, boolean visible) {        View view = getView(viewId);        if (view != null)            view.setVisibility(visible ? View.VISIBLE : View.GONE);        return this;    }    public ViewHolder setOnClickListener(int viewId, View.OnClickListener listener) {        View view = getView(viewId);        if (view != null)            view.setOnClickListener(listener);        return this;    }    public ViewHolder setOnLongClickListener(int viewId, View.OnLongClickListener listener) {        View view = getView(viewId);        if (view != null)            view.setOnLongClickListener(listener);        return this;    }    public ViewHolder setTag(int viewId, Object tag) {        View view = getView(viewId);        if (view != null)            view.setTag(tag);        return this;    }    public ViewHolder setTag(int viewId, int key, Object tag) {        View view = getView(viewId);        if (view != null)            view.setTag(key, tag);        return this;    }    public ViewHolder setChecked(int viewId, boolean checked) {        Checkable view = (Checkable) getView(viewId);        if (view != null)            view.setChecked(checked);        return this;    }}






0 0
原创粉丝点击