Android中的Adapter封装
来源:互联网 发布:如何入门数据分析师 编辑:程序博客网 时间:2024/06/06 09:45
转载请注明出处:http://blog.csdn.net/zhanjixun/article/details/51346305
在Android开发中经常会用到Adapter,经常要实现一大堆方法。为了简化开发,不多做一些简单繁琐的工作,我对Adapter进行了封装。
/** * 要先在构造函数中调用setLayoutId()设置布局文件 * * @author zhanjixun * * @param <T> */public abstract class EasyAdapter<T> extends BaseAdapter {protected List<T> mList = new LinkedList<T>();protected Context mContext;protected int mLayoutId;public EasyAdapter(Context context, List<T> list) {mContext = context;mList = list;}/** * 获取适配器的数据 * * @return */public List<T> getList() {return mList;}/** * 单个添加数据 * * @param item */public void add(T item) {mList.add(item);notifyDataSetChanged();}/** * 追加数据 * * @param list */public void append(List<T> list) {mList.addAll(list);notifyDataSetChanged();}/** * 替换数据,不关联参数的List * * @param list */public void replace(List<T> list) {mList.clear();mList.addAll(list);notifyDataSetChanged();}/** * 清空数据 */public void clear() {mList.clear();notifyDataSetChanged();}@Overridepublic int getCount() {return mList.size();}@Overridepublic T getItem(int position) {return mList.get(position);}@Overridepublic long getItemId(int position) {return position;}public Context getContext() {return mContext;}public int getLayoutId() {return mLayoutId;}protected void setLayoutId(int layoutId) {mLayoutId = layoutId;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {View view = convertView = View.inflate(mContext, mLayoutId, null);holder = new ViewHolder(view);view.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}// 填充信息convert(position, holder, getItem(position));return holder.getConvertView();}protected abstract void convert(int position, ViewHolder holder, T item);}其中用到的ViewHolder是用来保存重用的view的,可以在这里设置特定的item的数据
代码如下:(其中除了一大堆常用的view的api之外,关键代码在前面几个方法,构造函数ViewHolder(View)通过传入一个View来持有这个View,findViewById,通过id定位子控件)
/** * view持有 * * @author zhanjixun * */public class ViewHolder {private final SparseArray<View> mViews = new SparseArray<View>();private View mConvertView;public ViewHolder(View v) {mConvertView = v;}/** * 通过viewId获取控件 * * @param viewId * @return */@SuppressWarnings("unchecked")public <T extends View> T findViewById(int viewId) {View view = mViews.get(viewId);if (view == null) {view = mConvertView.findViewById(viewId);mViews.put(viewId, view);}return (T) view;}/** * 得到持有的View * * @return */public View getConvertView() {return mConvertView;}public ViewHolder setText(int viewId, String text) {TextView tv = findViewById(viewId);tv.setText(text);return this;}public ViewHolder setImageResource(int viewId, int resId) {ImageView view = findViewById(viewId);view.setImageResource(resId);return this;}public ViewHolder setImageBitmap(int viewId, Bitmap bitmap) {ImageView view = findViewById(viewId);view.setImageBitmap(bitmap);return this;}public ViewHolder setImageDrawable(int viewId, Drawable drawable) {ImageView view = findViewById(viewId);view.setImageDrawable(drawable);return this;}public ViewHolder setBackgroundColor(int viewId, int color) {View view = findViewById(viewId);view.setBackgroundColor(color);return this;}public ViewHolder setBackgroundResource(int viewId, int backgroundRes) {View view = findViewById(viewId);view.setBackgroundResource(backgroundRes);return this;}public ViewHolder setTextColor(int viewId, int textColor) {TextView view = findViewById(viewId);view.setTextColor(textColor);return this;}public ViewHolder setTextColorResource(int viewId, int textColorRes) {TextView view = findViewById(viewId);Resources resources = mConvertView.getContext().getResources();view.setTextColor(resources.getColor(textColorRes));return this;}public ViewHolder setVisibility(int viewId, int visible) {View view = findViewById(viewId);view.setVisibility(visible);return this;}public ViewHolder setProgress(int viewId, int progress) {ProgressBar view = findViewById(viewId);view.setProgress(progress);return this;}public ViewHolder setProgress(int viewId, int progress, int max) {ProgressBar view = findViewById(viewId);view.setMax(max);view.setProgress(progress);return this;}public ViewHolder setProgressMax(int viewId, int max) {ProgressBar view = findViewById(viewId);view.setMax(max);return this;}public ViewHolder setRating(int viewId, float rating) {RatingBar view = findViewById(viewId);view.setRating(rating);return this;}public ViewHolder setRating(int viewId, float rating, int max) {RatingBar view = findViewById(viewId);view.setMax(max);view.setRating(rating);return this;}public ViewHolder setTag(int viewId, Object tag) {View view = findViewById(viewId);view.setTag(tag);return this;}public ViewHolder setTag(int viewId, int key, Object tag) {View view = findViewById(viewId);view.setTag(key, tag);return this;}public ViewHolder setChecked(int viewId, boolean checked) {Checkable view = (Checkable) findViewById(viewId);view.setChecked(checked);return this;}public ViewHolder setOnClickListener(int viewId,View.OnClickListener listener) {View view = findViewById(viewId);view.setOnClickListener(listener);return this;}public ViewHolder setOnTouchListener(int viewId,View.OnTouchListener listener) {View view = findViewById(viewId);view.setOnTouchListener(listener);return this;}public ViewHolder setOnLongClickListener(int viewId,View.OnLongClickListener listener) {View view = findViewById(viewId);view.setOnLongClickListener(listener);return this;}}
使用方法:
写一个类直接继承EasyAdapter声明的泛型为你要处理的数据的类型,然后实现convert方法处理数据的绑定
public class ListViewAdapter extends EasyAdapter<String> {public ListViewAdapter(Context context, List<String> list) {super(context, list);setLayoutId(R.layout.item_listview);}@Overridepublic void convert(int position, ViewHolder holder, String item) {super.convert(position, holder, item);holder.setText(R.id.mainTextView, item);}}
0 0
- Android中的Adapter封装
- android adapter封装
- Android 通用Adapter封装
- Android 各类 Adapter 封装
- android 简单的adapter封装
- Android---封装ListView的Adapter
- android RecycleView Adapter简单封装
- Android 封装RecyclerView的Adapter
- Android Adapter的简单封装
- Android RecyclerView通用Adapter封装
- Android 中的 adapter
- Android 中的 adapter
- Android 中的 adapter
- android 中的 adapter介绍
- Android 中的 adapter
- Android中的Adapter用法
- Android中的各种Adapter
- 关于Android中的Adapter
- Ubuntu下载Android源码
- 网络(Java核心技术卷Ⅱ)
- python字符串处理
- 关于Div的宽度与高度的100%设定
- 67. Add Binary
- Android中的Adapter封装
- Zeppelin安装文档
- UE4:关闭自动曝光
- Error getting nested result map values for 'user_inf'. Cause: java.sql.SQLException: Cannot convert
- sigsuspend()函数 解释
- Android酷炫的加载动画
- C# 编程遇到An object reference is required for the non-static field, method, or property错误
- Hadoop完全分布式+HA配置
- fiddlercore学习(1)