Android中Adapter的一种简介的设计
来源:互联网 发布:windows xp ping不通 编辑:程序博客网 时间:2024/05/29 06:41
//这是自己之前在看一个ImageLoader时候看的一个Adapter的一种简洁的设计
首先是ViewHolder
package holder;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Path;import android.util.SparseArray;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import FileUtils.ImageLoader;/** * Created by Administrator on 2017/5/2. */public class ViewHolder { private final SparseArray<View> mViews; private int mPosition; private View mConvertView; public ViewHolder(Context context, ViewGroup parent, int layoutId, int position) { this.mViews = new SparseArray<View>(); this.mPosition = position; mConvertView = LayoutInflater.from(context).inflate(layoutId,parent,false); mConvertView.setTag(this); } //获取一个ViewHolder public static ViewHolder get(Context context, View convertView, ViewGroup parent, int layoutId, int position){ ViewHolder viewHolder = null; if(convertView==null){ viewHolder= new ViewHolder(context,parent,layoutId,position); }else{ viewHolder = (ViewHolder) convertView.getTag(); viewHolder.mPosition = position; } return viewHolder ; } //获取convertView public View getConvertView(){ return mConvertView; } //通过空间id获取对应空间,如果没有的话就加入控件 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 ViewHolder setText(int viewId,String text){ TextView textView = getView(viewId); textView.setText(text); return this; } //设置图片 public ViewHolder setImageResource(int viewId,int resource){ ImageView imageView = getView(viewId); imageView.setImageResource(resource); return this; } //设置bitmap图片 public ViewHolder setImageBitmap(int viewId, Bitmap bitmap){ ImageView imageView = getView(viewId); imageView.setImageBitmap(bitmap); return this; } //通过path设置图片 public ViewHolder setImageByPath(int viewId,String path){ ImageView imageView = getView(viewId); ImageLoader.getInstance().loadLocalImage(path,imageView); return this; } //通过网络url设置图片 public ViewHolder setImageByUrl(int viewId,String url){ ImageView imageView = getView(viewId); ImageLoader.getInstance().LoadURLImage(url,imageView); return this; } //返回位置 public int getPosition() { return mPosition; }}//然后是BaseAdapter
package adapter;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import java.util.List;import holder.ViewHolder;/** * Created by Administrator on 2017/5/2. */public abstract class CommonAdapter<T> extends BaseAdapter { protected LayoutInflater layoutInflater; protected Context context; protected List<T> mData; protected final int mItemLayoutId; public CommonAdapter(int mItemLayoutId,Context context,List<T> data) { this.mItemLayoutId = mItemLayoutId; layoutInflater = LayoutInflater.from(context); this.context = context; this.mData = data; } @Override public int getCount() { return mData.size(); } @Override public T getItem(int i) { return mData.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder = getViewHolder(position, convertView, parent); convert(viewHolder, getItem(position)); return viewHolder.getConvertView(); } public abstract void convert(ViewHolder viewHolder,T item); private ViewHolder getViewHolder(int position, View convertView, ViewGroup parent) { return ViewHolder.get(context, convertView, parent, mItemLayoutId, position); }}
0 0
- Android中Adapter的一种简介的设计
- Android-对ListView的Adapter的一种简单封装
- Adapter 中view 的复用的一种优化方案
- Android中Adapter的学习
- Android中Adapter的一点一滴
- adapter中加点击事件的一种写法
- Android当中的设计模式适配器Adapter
- android中GridView的Adapter的getView()
- 关于android中ListView的Adapter如何设计能通用的一些看法
- Android中各种Adapter的用法
- Android中Adapter的学习与思考
- Android中Adapter的学习与思考
- Android中AdapterView/Adapter的深度学习
- Android中Adapter的notifyDataSetI…
- Android中AdapterView/Adapter的深度学习
- Android中自定义Adapter的基本原理
- Android中 的各种Adapter 整理
- Android中各种Adapter的用法
- OpenCV之Python学习笔记
- C/C++求职者必备的20道面试题
- 远程桌面连接树莓派
- STL空间配置器之内存池技术
- 大数据学习之HDP SANDBOX开始学习
- Android中Adapter的一种简介的设计
- linux下的创建子进程的方法
- building machine learning system with Python 学习笔记--从零开始机器学习(2)第一章
- 解答:为什么判断一个数是否为素数时只需开平方根就行了!
- tomcat自动部署代码脚本
- linux011-unstd.h头文件
- uboot移植第四天——代码分析(4)
- 略读《Effective C++》摘要
- ARM基础学习-SWI异常中断处理