项目开发总结之通用适配器
来源:互联网 发布:程序员的鄙视链 庞博 编辑:程序博客网 时间:2024/06/07 22:56
public abstract class CommonAdapter<T> extends BaseAdapter { protected LayoutInflater mInflater; protected Context mContext; protected List<T> mDatas; protected SparseArray<T> sparseArray; protected final int mItemLayoutId; private int viewHeight;//整个item的高度 public int getViewHeight() { return viewHeight; } public void setViewHeight(int viewHeight) { this.viewHeight = viewHeight; } public List<T> getmDatas() { return mDatas == null ? (List<T>) new ArrayList<>() : mDatas; } public void setmDatas(List<T> mDatas) { this.mDatas = mDatas; } private boolean isPositon; /** * 设置list * * @param list */ public void setList(List<T> list) { if (list != null) { if (this.mDatas == null) { mDatas = list; this.notifyDataSetChanged(); return; } if (this.mDatas.size() > 0) { this.mDatas.clear(); } this.mDatas.addAll(list); this.notifyDataSetChanged(); } } public void addList(List<T> list) { if (list != null && list.size() > 0) { this.mDatas.addAll(list); this.notifyDataSetChanged(); } } /** * 添加一个对象 * * @param data */ public void addObject(T data) { if (!this.mDatas.contains(data)) { this.mDatas.add(data); } this.notifyDataSetChanged(); } public CommonAdapter(Context context, List<T> mDatas, int itemLayoutId) { this.mContext = context; this.mInflater = LayoutInflater.from(mContext); this.mDatas = mDatas; this.mItemLayoutId = itemLayoutId; } public CommonAdapter(Context context, List<T> mDatas, int itemLayoutId, boolean isPositon) { this.mContext = context; this.mInflater = LayoutInflater.from(mContext); this.mDatas = mDatas; this.mItemLayoutId = itemLayoutId; this.isPositon = isPositon; } public CommonAdapter(Context context, SparseArray<T> sparseArray, int itemLayoutId) { this.mContext = context; this.mInflater = LayoutInflater.from(mContext); this.sparseArray = sparseArray; this.mItemLayoutId = itemLayoutId; } @Override public int getCount() { if (mDatas != null) { return mDatas.size(); } else { if (sparseArray != null) return sparseArray.size(); return 0; } } @Override public T getItem(int position) { if (mDatas != null) { return mDatas.get(position); } return sparseArray.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder = getViewHolder(position, convertView, parent); if (isPositon) { convert(viewHolder, getItem(position), position); } else { convert(viewHolder, getItem(position)); } if (viewHeight > 0) { ViewGroup.LayoutParams layoutParams = viewHolder.getConvertView().getLayoutParams(); layoutParams.height = viewHeight; viewHolder.getConvertView().setLayoutParams(layoutParams); } return viewHolder.getConvertView(); } public abstract void convert(ViewHolder helper, T item); public void convert(ViewHolder helper, T item, int position) { } private ViewHolder getViewHolder(int position, View convertView, ViewGroup parent) { return ViewHolder.get(mContext, convertView, parent, mItemLayoutId, position); }}
public class ViewHolder { private final SparseArray<View> mViews; private int mPosition; private View mConvertView; private ViewHolder(Context context, ViewGroup parent, int layoutId, int position) { this.mPosition = position; this.mViews = new SparseArray<View>(); mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false); // setTag mConvertView.setTag(this); } /** * 设置圆环 * * @param itemId * @param percents * @param isHaveAnim * @return */ public ViewHolder setAnimationView(int itemId, ArrayList percents, boolean isHaveAnim, int colors[]) { View view = getView(itemId); if (view instanceof CircleAnimationView) { CircleAnimationView circleAnimationView = getView(itemId); circleAnimationView.setIsHaveAnim(isHaveAnim); circleAnimationView.setColors(colors); circleAnimationView.setPercents(percents); } return this; } /** * 拿到一个ViewHolder对象 * * @param context * @param convertView * @param parent * @param layoutId * @param position * @return */ 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(); } public View getConvertView() { return mConvertView; } /** * 通过控件的Id获取对于的控件,如果没有则加入views * * @param viewId * @return */ public <T extends View> T getView(int viewId) { View view = mViews.get(viewId); if (view == null) { view = mConvertView.findViewById(viewId); view.setVisibility(View.VISIBLE); mViews.put(viewId, view); } return (T) view; } /** * 为TextView设置字符串 * * @param viewId * @param text * @return */ public ViewHolder setText(int viewId, String text) { TextView view = getView(viewId); view.setText(text); return this; } /** * 为TextView设置字符串 * * @param viewId * @param text * @param typeface 字体 * @return */ public ViewHolder setText(int viewId, String text, Typeface typeface) { TextView view = getView(viewId); view.setText(text); view.setTypeface(typeface); return this; } /** * 为TextView设置字符串 * * @param viewId * @param colors * @return */ public ViewHolder setTextColor(int viewId, int colors) { TextView view = getView(viewId); view.setTextColor(colors); return this; } /** * 为TextView设置字符串 * * @param viewId * @return */ public String getText(int viewId) { TextView view = getView(viewId); return view.getText().toString(); } /** * 为TextView设置字符串 * * @param viewId * @param firstStyleItem * @return */ public ViewHolder setText(int viewId, List<TextStyleItem> firstStyleItem) { TextView view = getView(viewId); StyleBuilder styleBuilder = new StyleBuilder(); if (firstStyleItem != null) { for (TextStyleItem textSyleItem : firstStyleItem ) { styleBuilder.addStyleItem(textSyleItem); } } styleBuilder.show(view); return this; } /** * 为TextView设置字符串 * * @param viewId * @return */ public ViewHolder setTextMinWidth(int viewId, int width) { TextView view = getView(viewId); view.setMinWidth(width); return this; } /** * 为TextView设置字符串 * * @param viewId * @param ischeck * @return */ public ViewHolder setChecked(int viewId, boolean ischeck) { View view = getView(viewId); if (view instanceof CheckBox) { ((CheckBox) view).setChecked(ischeck); } else if (view instanceof RadioButton) { ((RadioButton) view).setChecked(ischeck); } return this; } /** * 获取check的值 * * @param viewId * @return */ public boolean getCheck(int viewId) { View view = getView(viewId); if (view instanceof CheckBox) { return ((CheckBox) view).isChecked(); } else if (view instanceof RadioButton) { return ((RadioButton) view).isChecked(); } return false; } /** * 为TextView设置tag * * @param viewId * @param text * @return */ public ViewHolder setTag(int viewId, Object text) { TextView view = getView(viewId); view.setTag(text); return this; } public ViewHolder hideView(int viewId) { getView(viewId).setVisibility(View.GONE); return this; } public ViewHolder showView(int viewId) { getView(viewId).setVisibility(View.VISIBLE); return this; } /** * 设置动画 * * @param viewId * @param animation * @return */ public ViewHolder setAnim(int viewId, Animation animation) { View view = getView(viewId); view.startAnimation(animation); return this; } /** * 停止动画 * * @param viewId * @param animation */ public ViewHolder stopAnim(int viewId, Animation animation) { // TODO Auto-generated method stub View view = getView(viewId); view.clearAnimation(); return this; } /** * 为View * * @param viewId * @param isVisible * @return */ public ViewHolder setVisible(int viewId, boolean isVisible) { View view = getView(viewId); if (isVisible) { view.setVisibility(View.VISIBLE); } else { view.setVisibility(View.GONE); } return this; } public ViewHolder setVisible(int viewId, int isVisible) { View view = getView(viewId); if (isVisible == 1) { view.setVisibility(View.VISIBLE); } else if (isVisible == 2) { view.setVisibility(View.GONE); } else { view.setVisibility(View.INVISIBLE); } return this; } /** * 为TextView设置字符串,带颜色 * * @param viewId * @param text * @return */ public ViewHolder setText(int viewId, String text, int color) { TextView view = getView(viewId); view.setText(text); view.setTextColor(color); return this; } /** * 为ImageView设置图片 * * @param viewId * @param drawableId * @return */ public ViewHolder setImageResource(int viewId, int drawableId) { if (viewId != 0 && drawableId != 0) { View view = getView(viewId); if (view instanceof ImageView) { ((ImageView) view).setImageResource(drawableId); } else if (view instanceof ImageButton) { ((ImageButton) view).setImageResource(drawableId); } } return this; } public ViewHolder setBackgroundResource(int viewId, int drawableId) { if (viewId != 0 && drawableId != 0) { View view = getView(viewId); if (view instanceof TextView) { ((TextView) view).setBackgroundResource(drawableId); } } return this; } /** * 为ImageView设置图片 * * @param viewId * @param drawableId * @return */ public ViewHolder setImageResource(int viewId, String drawableId) { if (viewId != 0 && drawableId != null) { //得到可用的图片 ImageOptions options = new ImageOptions.Builder().setUseMemCache(true) . setCircular(false) . setIgnoreGif(false) .setFailureDrawableId(R.drawable.icon_normal) .setLoadingDrawableId(R.drawable.icon_normal) . setImageScaleType(ImageView.ScaleType.CENTER_CROP) //以及其他方法 .build(); View view = getView(viewId); if (view instanceof ImageView) { x.image().bind(((ImageView) view), drawableId,options); } else if (view instanceof ImageButton) { x.image().bind(((ImageButton) view), drawableId,options); } } return this; } public ViewHolder setImageResource(Context context, int viewId, String drawableId) { if (viewId != 0 && drawableId != null) { //得到可用的图片 View view = getView(viewId); if (view instanceof ImageView) {// RequestOptions options = new RequestOptions()// .centerCrop()// .placeholder(R.drawable.icon_normal)// .error(R.drawable.icon_normal)// .priority(Priority.HIGH)// .diskCacheStrategy(DiskCacheStrategy.NONE); Glide.with(context).load(drawableId)// .apply(options) .centerCrop() .placeholder(R.drawable.icon_normal) .error(R.drawable.icon_normal) .priority(Priority.HIGH) .diskCacheStrategy(DiskCacheStrategy.NONE)// .placeholder(R.drawable.icon_normal) .into((ImageView) view); } else if (view instanceof ImageButton) {// RequestOptions options = new RequestOptions()// .centerCrop()// .placeholder(R.drawable.icon_normal)// .error(R.drawable.icon_normal)// .priority(Priority.HIGH)// .diskCacheStrategy(DiskCacheStrategy.NONE); Glide.with(context).load(drawableId)// .apply(options) .centerCrop() .placeholder(R.drawable.icon_normal) .error(R.drawable.icon_normal) .priority(Priority.HIGH) .diskCacheStrategy(DiskCacheStrategy.NONE) .into((ImageButton) view); } } return this; } /** * 为ImageView设置图片 * * @param viewId * @return */ public ViewHolder setViewHeight(int viewId, int height) { if (viewId != 0 && height != 0) { //得到可用的图片 View view = getView(viewId); ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); layoutParams.height = height; view.setLayoutParams(layoutParams); } return this; } /** * 为ImageView设置图片 * * @param viewId * @param drawableId * @return */ public ViewHolder setImageResource(int viewId, String drawableId, ImageOptions imageOptions) { if (viewId != 0 && drawableId != null) { View view = getView(viewId); if (view instanceof ImageView) { x.image().bind(((ImageView) view), drawableId, imageOptions); } else if (view instanceof ImageButton) { x.image().bind(((ImageButton) view), drawableId, imageOptions); } } return this; } /** * 为View设置图片 * * @param viewId * @param drawableId * @return */ public ViewHolder setBackgroundBg(int viewId, int drawableId) { if (viewId != 0 && drawableId != 0) { View view = getView(viewId); if (view == null) { return this; } view.setBackgroundResource(drawableId); } return this; } /** * 为View设置是否可点击 * * @param viewId * @param isClicked * @return */ public ViewHolder setOnClicked(int viewId, boolean isClicked) { if (viewId != 0) { View view = getView(viewId); if (view == null) { return this; } view.setClickable(isClicked); } return this; } /** * 为ImageView设置图片 * * @param viewId * @param bm * @return */ public ViewHolder setImageBitmap(int viewId, Bitmap bm) { ImageView view = getView(viewId); view.setImageBitmap(bm); return this; } /** * 为View设置点击事件 * * @param viewId * @param onClickListener * @return */ public ViewHolder setViewOnclick(int viewId, OnClickListener onClickListener) { View view = getView(viewId); view.setOnClickListener(onClickListener); return this; } /** * 为View check * * @param viewId * @return */ public ViewHolder setViewOnCheckChangeListener(int viewId, CompoundButton.OnCheckedChangeListener onCheckedChangeListener) { View view = getView(viewId); if (view instanceof RadioButton) { ((RadioButton) view).setOnCheckedChangeListener(onCheckedChangeListener); } else if (view instanceof CheckBox) { ((CheckBox) view).setOnCheckedChangeListener(onCheckedChangeListener); } return this; } /** * 为View设置长按点击事件 * * @param viewId * @param longClickListener * @return */ public ViewHolder setViewOnclick(int viewId, OnLongClickListener longClickListener) { View view = getView(viewId); view.setOnLongClickListener(longClickListener); return this; } public int getPosition() { return mPosition; }}
注:本文代码是他人总结,故标记为转载,仅供参考学习。
阅读全文
0 0
- 项目开发总结之通用适配器
- android开发之继承BaseAdapter实现通用数据适配器
- Android开发学习之常见适配器总结
- Android 开发技巧-Listview通用适配器BaseCommAdapter
- Android快速开发之设计通用的ListView,GridView的适配器
- Android开发之适配器
- 项目之CLQT开发总结
- 项目之WIFI开发总结
- 项目开发总结之SharedPreferences
- 项目开发总结之CountDownTimerUtils
- Android视频播放项目总结之 适配器绑定视频信息列表显示到界面(适配器简单优化)
- 项目开发通用欢迎界面
- 项目开发通用欢迎界面
- Android开发之适配器ListView
- Android 快速开发系列 万能通用的ListView GridView 适配器
- Android开发——如何实现RecyclerView通用适配器
- Android快速开发工具---通用的适配器Adapter
- [开发] 项目管理之 CVS & SVN 总结
- Android studio 编译错误
- Linux中mariadb数据库的安装与配置
- SpringBoot项目在IntelliJ IDEA中实现热部署
- git 常用命令
- Javascript Dom编程艺术读书笔记(三)
- 项目开发总结之通用适配器
- 错过
- coding
- 本地CentOS 7 下 安装 LEMP 服务(nginx+MariaDB+php)
- PHP基于标准的CBC模式的DES加密算法
- UltraEdit查看class的jdk版本
- 使用angular创建一个service
- [cocos2dx_Lua]quick中的节点帧事件
- 一个疏忽导致温度曲线不能显示