只上代码不多说话

public abstract class ABaseAdapter extends BaseAdapter{Context context;protected ABaseAdapter(Context context) {this.context = context;}protected ABaseAdapter() {}/*** 各个控件的缓存*/public class ViewHolder{public SparseArray<View> views = new SparseArray<View>();/*** 指定resId和类型即可获取到相应的view* @param convertView* @param resId* @param <T>* @return*/public <T extends View> T obtainView(View convertView, int resId){View v = views.get(resId);if(null == v){v = convertView.findViewById(resId);views.put(resId, v);}return (T)v;}}/*** 改方法需要子类实现,需要返回item布局的resource id* @return*/public abstract int itemLayoutRes();@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if(null == convertView){holder = new ViewHolder();convertView = LayoutInflater.from(context).inflate(itemLayoutRes(), null);convertView.setTag(holder);}else{holder = (ViewHolder) convertView.getTag();}return getView(position, convertView, parent, holder);}/*** 使用该getView方法替换原来的getView方法,需要子类实现* @param position* @param convertView* @param parent* @param holder* @return*/public abstract View getView(int position, View convertView, ViewGroup parent, ViewHolder holder);}

ABaseAdapter的用法:

1:编写适配类直接继承该ABaseAdapter。

2.在构造方法中调用父类的方法:

即:

public MyAdapter(Context context){super(context);}

3:重写父类方法itemLayoutRes():

@Override
public int itemLayoutRes() {return R.layout.caipu_griditem;//返回布局的文件
}

4:重写父类额抽象方法getView(),绑定数据:

    @Overridepublic View getView(int position, View convertView, ViewGroup parent,ViewHolder holder) {ImageView imageView = holder.obtainView(convertView, R.id.cp_grid_img);TextView textView = holder.obtainView(convertView, R.id.cp_grid_text);imageView.setBackgroundResource(IMAGES[position]);textView.setText(TITLES[position]);return convertView;}

结果简洁了许多。好东西,记得要分享!

转载于:https://www.cnblogs.com/wei1228565493/p/4684782.html

ABaseApdater相关推荐

最新文章

  1. 西湖大学三位资深博导自述:我与我的第一位博士生
  2. SectionList的使用
  3. C语言的成绩查询系统,c语言 成绩查询系统
  4. java 有没有with语句_Java中的try-with-resources语句
  5. 信息学奥赛一本通 1003:对齐输出 | OpenJudge NOI 1.1 03
  6. 24. 练习定义几种指针及数组
  7. python爬取论坛帖子_python爬虫爬取虎扑论坛的帖子名称和链接,为什么只能爬10页就报...
  8. 如何修改tomcat项目的图标
  9. python中计算DataFrame,Series的数据频率
  10. 【Java】编码规范
  11. Ubuntu 16.04 安装搜狗输入法
  12. CCF CSP 201803-1 跳一跳
  13. Android 插件化换肤方案
  14. JVM垃圾收集器详解之Parallel Scavenge
  15. 逾期的人真有这么多吗?
  16. codeforces 596E Wilbur and Strings(DFS)
  17. jQuery第三方插件
  18. anaconda 创建虚拟环境(自己版本)
  19. Linux关机时执行指定脚本
  20. Docker报错Error spawning command line “dbus-launch --autolaunch=xxx --binary-syntax --close-stderr”

热门文章

  1. 关于winform屏蔽锁
  2. KRKR简单使用实例开发
  3. CSS样式属性单词之Left
  4. Activity 在横竖屏切换情况下的生命周期变化
  5. C#:对txt文件的读写
  6. bzoj3895: 取石子(博弈论,记忆化搜索)
  7. 迟到的2017年终总结与2018目标规划
  8. ROS探索总结(十二)——坐标系统
  9. 编译linux内核时出错
  10. F#基础教程 大纲