封装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
- 封装Adapter ViewHolder
- 封装的viewholder和adapter
- 封装好的万能ViewHolder和Adapter
- RecyclerView中Adapter和ViewHolder的封装
- Android 封装RecyclerView.Adapter,省其ViewHolder
- adapter的优化---配合上一篇viewHolder的封装
- RecyclerView的ViewHolder和Adapter的封装优化
- 【FirstKotlinApp】使用Kotllin封装Adapter时ViewHolder的一点技巧
- viewholder 封装
- Adapter中ViewHolder用法
- 通用Adapter与ViewHolder
- RecyclerView,Adapter和ViewHolder
- 自定义Adapter和ViewHolder
- 自定义封装了ViewHolder的BaseAdapter,简化了Adapter的编写
- 封装使用ViewHolder模式的Adapter组件,及用其快速实现聊天界面
- HeaderAndFooterRecyclerView 带emptyview、头部header和尾部footer的封装 通用Adapter ViewHolder
- android ViewHolder 封装写法
- 封装RecyclerView.ViewHolder
- linux中shell变量$#,$@,$0,$1,$2的含义解释:
- Javascript模块化编程(二):AMD规范
- exec函数实现
- 盘点5种长盛不衰的电子游戏类型
- net start mysql报发生系统错误2
- 封装Adapter ViewHolder
- JQuery ajax提交表单时<button>按钮引起的 Request method 'GET' not supported错误!
- android:windowsoftinputmode=“adjustresize” 无效的解决办法
- BZOJ 2132 圈地计划 最小割
- 关于什么事API游戏接口
- 编程第八九天
- 感知机的 python 实现
- spring知识二---(bean关系和作用域)
- Mysql net start mysql启动,提示发生系统错误 5 拒绝访问 解决之道