封装Adapter ViewHolder

来源:互联网 发布:c语言教材 编辑:程序博客网 时间:2024/06/04 00:27

public class CommonViewHolder {    private SparseArray<View> mViews;    private View mConvertView;    private int position;    protected CommonViewHolder(Context context, ViewGroup parent,int layoutId){        mViews = new SparseArray<>();        mConvertView = LayoutInflater.from(context).inflate(layoutId,parent,false);        mConvertView.setTag(this);    }    public static CommonViewHolder get(Context context,View convertView,ViewGroup parent,int layoutId,int position){        CommonViewHolder viewHolder = null;        if(convertView == null){            viewHolder = new CommonViewHolder(context,parent,layoutId);        }else{            viewHolder = (CommonViewHolder) convertView.getTag();        }        viewHolder.position = position;        return viewHolder;    }    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 position;    }    public CommonViewHolder setText(int viewId,String text){        TextView textView = getView(viewId);        textView.setText(text);        return this;    }    public CommonViewHolder setRating(int viewId,Float rating){        RatingBar ratingBar = getView(viewId);        ratingBar.setRating(rating);        return this;    }    public CommonViewHolder setImageResource(int viewId, int resId)    {        ImageView view = getView(viewId);        view.setImageResource(resId);        return this;    }    public CommonViewHolder setImageBitmap(int viewId, Bitmap bitmap)    {        ImageView view = getView(viewId);        view.setImageBitmap(bitmap);        return this;    }    public CommonViewHolder setImageDrawable(int viewId, Drawable drawable)    {        ImageView view = getView(viewId);        view.setImageDrawable(drawable);        return this;    }}


public abstract class CommonAdapter<T> extends BaseAdapter {    private Context mContext;    private List<T> mData;    private int layoutId;    public CommonAdapter(Context context,List<T> list,int layoutId){        this.mContext = context;        this.mData = list;        this.layoutId = layoutId;    }    @Override    public int getCount() {        return mData == null ? 0 : mData.size();    }    @Override    public T getItem(int position) {        return mData.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        CommonViewHolder viewHolder = CommonViewHolder.get(mContext,convertView,parent,layoutId,position);        setListener(viewHolder);        setContent(viewHolder,mData.get(position));        return viewHolder.getConvertView();    }    protected abstract void setListener(CommonViewHolder viewHolder);    protected abstract void setContent(CommonViewHolder viewHolder,T t);}


public class SelfEvaluationAdapter extends CommonAdapter<EvaluationBean> {    private ScoreListener scoreListener;    private List<EvaluationBean> mData;
    public SelfEvaluationAdapter(Context context, List<EvaluationBean> list, ScoreListener scoreListener) {        super(context, list, R.layout.item_self_evaluation);        this.scoreListener = scoreListener;        this.mData = list;    }    @Override    protected void setListener(CommonViewHolder viewHolder) {        RatingBar ratingBar = viewHolder.getView(R.id.ratingBar);        final int index = viewHolder.getPosition();        ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {            @Override            public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {                mData.get(index).setRating(rating);                float total = 0;                for(EvaluationBean evaluationBean : mData){                    total += evaluationBean.getRating();                }                scoreListener.getScore((int)total);            }        });    }    @Override    public void setContent(CommonViewHolder viewHolder, EvaluationBean evaluationBean) {        viewHolder.setText(R.id.item_title_selfEvaluation,evaluationBean.getEvaluation());        viewHolder.setRating(R.id.ratingBar,evaluationBean.getRating());    }    public interface ScoreListener{        void getScore(int score);    }}


0 0
原创粉丝点击