1. Apter的作用

Adapter是将数据绑定到UI界面上的桥接类。Adapter负责创建显示每个项目的子View和提供对下层数据的访问。Adapter的作用就是将要在列表内显示的数据和列表本身结合起来。列表本身只完成显示的作用,其实他就是继承自VIEWGROUP类。但是他又有一个独特的函数就是setAdapter()就是完成了view和adapter的结合。adapter如同其本身含义,其实就是一个适配器,他可以对要显示的数据进行统一的封装,主要是将数据变成view提供给list。Android提供了以下Adapter:

  • BaseAdapter:抽象类,实际开发中我们会继承这个类并且重写相关方法,用得最多的一个Adapter!
  • ArrayAdapter:支持泛型操作,最简单的一个Adapter,只能展现一行文字~
  • SimpleAdapter:同样具有良好扩展性的一个Adapter,可以自定义多种效果!
  • SimpleCursorAdapter:用于显示简单文本类型的listView,一般在数据库那里会用到,不过有点过时,不建议使用。

2. Adapter的使用举例

https://blog.csdn.net/coder_pig/article/details/48157807  Android基础入门教程——2.4.1 Adapter基础讲解

https://blog.csdn.net/coder_pig/article/details/48577231  Android基础入门教程——2.4.2 ListView简单使用

3. Adapter与ViewHolder

Holder主要用于缓存数据。这样只用加载一次布局文件,就可以生成一个存数据的容器。然后每次要加载数据的时候,直接把数据放容器里就ok,不用重新加载布局文件了。

https://blog.csdn.net/coder_pig/article/details/48596683  Android基础入门教程——2.4.3 BaseAdapter优化

  1. 继承 BaseAdapter (可在继承的时候指定泛型,扩展使用);
  2. 重写四个基本方法:
    getCount():获取数据的总的数量,返回 int 类型的结果;
    getItem(int position) :获取指定位置的数据,返回该数据;
    getItemId(int position):获取指定位置数据的id,返回该数据的id,一般以数据所在的位置作为它的id;
    getView(int position,View convertView,ViewGroup parent):关键方法,用于确定列表项
  3. 创建 ViewHolder (包含列表项的控件。)
public class MyListAdapter extends BaseAdapter{ // 类定义
// 自定义数据集与布局加载器
List<Note> notes;
LayoutInflater inflater; /** 构造方法 */
public MyListAdapter(Context context,List<Note> notes){
this.notes = notes;
inflater = LayoutInflater.from(context);
} /** 重写方法 */
@Override
public int getCount(){
return notes.size();
}
@Override
public Object getItem(int position){
return notes.get(position);
}
@Override
public long getItemId(int position){
return position;
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
ViewHolder viewHolder;
// 若无可重用的 view 则进行加载
if(converView == null){
convertView = inflater.inflate('列表项布局文件',parent,false);
// 初始化 ViewHolder 方便重用
viewHolder = new ViewHolder();
viewHolder.tvTitle = (TextView) convertView.findViewById('id1');
viewHolder.tvContent = (TextView) convertView.findViewById('id2');
converView.setTag(viewHolder);
}else{ // 否则进行重用
viewHolder = (ViewHolder)convertView.getTag();
}
// 获得条目内容对象
Note note = notes.get(position);
// 设置内容(Note Bean 需要自定义)
viewHolder.tvTitle.setText(note.getTitle());
viewHolder.tvContent.setText(note.getContent());
return converView;
}
} /** 创建 ViewHolder */
class ViewHolder{
TextView tvTitle;
TextView tvContent;
}

  

Android编码学习之Adapter的更多相关文章

  1. Android开发学习之Adapter

    Adapter是指适配器的意思,在Android中,适配器扮演者重要的角色,是UI与Data实现绑定的一个桥梁.Adapter负责创建和显示每个项目的子View和提供对下层数据的访问.支持Adapte ...

  2. Android编码学习之Fragment

    1. 什么是Fragment Fragment是Android honeycomb 3.0新增的概念,Fragment名为碎片不过却和Activity十分相似.Fragment是用来描述一些行为或一部 ...

  3. android编码学习

    虽然以下博客有点老,但很清晰,有不明白的基础知识,可以来这里找找. 2015年最新Android基础入门教程目录(完结版) 1. 环境配置 Android stodio gradle配置踩过的坑 An ...

  4. Android :Activity、Adapter、List的初步学习

    Activity Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行对手机应用操作. 每个 Activity 都会获得一个用于绘制其用户界面的窗口.窗口一般是会充满屏幕,但也不一定 ...

  5. 浅谈Android编码规范及命名规范

    前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...

  6. Android编码风格

    整理一下51CTO学院中张凌华老师讲的编码风格课程 一. 项目开发目录命名: Requirement - 需求相关文档 Design - 设计 Planning&Log - 计划,日志,会议 ...

  7. 【朝花夕拾】Android编码风格篇

    结合51CTO学院中张凌华老师讲的编码风格课程,对自己平时工作中的形成的一些编码风格做一些总结. 一. 项目开发目录命名: Requirement - 需求相关文档 Design - 设计 Plann ...

  8. Android开发学习路线的七个阶段和步骤

    Android开发学习路线的七个阶段和步骤           Android学习参考路线     第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...

  9. Android:学习AIDL,这一篇文章就够了(下)

    前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...

随机推荐

  1. Python交互图表可视化Bokeh:4. 折线图| 面积图

    折线图与面积图 ① 单线图.多线图② 面积图.堆叠面积图 1. 折线图--单线图 import numpy as np import pandas as pd import matplotlib.py ...

  2. day 51 js-2 函数,对象,正则 (定时器示例)

    本文转载自cnblogs.liwenzhou-----哪吒博客 先来一个定时器让我们看看函数的效果: <script src="/js/jquery-3.2.1.min.js" ...

  3. M × N Puzzle POJ - 2893(奇数码)

    The Eight Puzzle, among other sliding-tile puzzles, is one of the famous problems in artificial inte ...

  4. HDU 5592 ZYB's Game 【树状数组】+【二分】

    <题目链接> 题目大意: 给你一个由1~n,n个数组成的序列,给出他们每个的前缀逆序数,现在要求输出这个序列. 解题分析: 由前缀逆序数很容易能够得到每个数的逆序数.假设当前数是i,它前面 ...

  5. UML图快速入门

    UML(Unified Modeling Language)统一建模语言的概念已经出现了近20年,虽然并不是所有的概念都非常有实践意义,但常见的用例图.类图.序列图和状态图却实实在在非常有效,是项目中 ...

  6. Rendering React components to the document body

    React一个比较好用的功能是其简单的API,一个组件可以简单到一个return了组件结构的render函数.除了一个简单的函数之外,我们还有了一段有用且可复用的代码片段. 问题 不过有时候可能会受到 ...

  7. ASP.Net Core中使用jquery-ajax-unobtrusive替换Ajax.BeginForm

    在大潮流下,大家都在研究MVVM框架,但是做面向搜索引擎的外网项目还是得用服务器渲染. 在.Net中肯定就是用Razor模板引擎了. .Net Core断臂式重构后,很多在老得Mvc中使用得好好的一些 ...

  8. AE缺失Form Trapcode Form

    缺失Form 下载链接: trapcode套装插件2017下载_Trapcode系列十款插件汉化版[支持AE CC 64位] - 迷你下载 下载Trapcode就可以了,应该是TC里的 去新CG下插件 ...

  9. 如何使用TDD和React Testing Library构建健壮的React应用程序

    如何使用TDD和React Testing Library构建健壮的React应用程序 当我开始学习React时,我努力的一件事就是以一种既有用又直观的方式来测试我的web应用程序. 每次我想测试它时 ...

  10. [HNOI2017]礼物

    Description: 给定两个有n个数的序列,你可以将其中一个进行旋转(想象是在一个环上),或者对序列的每个数加上一个非负整数C 求操作后 \(\sum{(a_i-b_i)^2}\)的最小值 De ...