当前位置: 首页 > article >正文

菜鸟浅谈对于Adapter及AdapterView的理解

      初学安卓半月菜鸟浅谈对于AdapterAdapterView的理解

犀利哥慎重声明:大神请绕路,菜鸟们一起来互勉!

 

     相信很多初学者跟我一样,在学习安卓基础的时候,刚开始接触到AdapterAdapterView这一章节的时候,大多数一开始的内心其实是拒绝的,里面的一些概念及方法一开始有些晦涩难懂,但是没办法,要想真正入门,这道坎必须得跨过,因为这是学习后面更复杂技术( 虽然我也不知道是啥...)的一块小小的垫脚石.

首先从学习方法来说,还是用大家都比较公认也是相对科学的学习新知识的一般套路,3W1H方法,以下我将从这四个方面浅谈我对于这一部分的理解,仅供大家参考,也算是对于自己所学知识的一个总结.

.what?Adapter以及AdapterView是什么?

     Adapter的中文解释为适配器,顾名思义就是通过合适的配置调整来连接某两个部分并使之能够协调工作的这么一个东东,单从概念上来看,像以前家里电视机怕被雷电劈导致电压不稳而安装的那种稳压器也可以看作是一个适配器(通过对电压的调整从而使得电视机能在不稳定电流输出下持续正常的工作),具体而高大上的说法是:

Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(view)之间一个重要的纽带.

不过这个概念好像也不难理解,那么知道什么是Adapter之后,AdapterView当然就是需要用到AdapterView.什么?非得整高大上的解释?好吧,那就勉强装个波:

AdapterView就是和数据有关的控件,例如ListView,GridView,SpinnerView,只要是在展示的过程中需要和数据交换的View都属于这一类(江郎才已尽..).

二.Why?为什么要用Adapter?

个人理解来看,使用Adapter最大的好处就是能够实现视图(view)跟数据的分离,这也是以后开发思想MVC模式里面的一个重大体现.大家应该还记得初学Common Layout(普通布局,神马RalativeLayout,LinerLayout吧啦吧啦之类)的时候,我们所构建出来的界面都是把要展现的控件以及数据直接写到XML文件里面的,试想要是这些数据事先不确定,需要从网上加载或是从数据库中调取,那我们是不是就感觉无能为力了呢,事实上确实是这样,毫无办法,只能望洋兴叹...所以引入了Adapter这一神器来解决这一系列的困扰,通过普通布局的编写,我们可以把大致的UI界面架构给粗略地描绘出来,但是具体到里面的控件摆放以及数据展现,就需要借助于Adapter这个中间乔梁来进行实现了,所以Adapter又可以理解为连接数据源跟视图之间的一座桥梁.本文将侧重介绍Adapter的应用场景及实现原理.

三.where?Adapter用在哪儿?

      这个问题还需要我解答?Adapter当然是用在AdapterView中啊,不理解的请自行智商充值,顺便也给我充一发~!

   

四.how?怎么用?

AdapterAdapterView的用法很灵活,正是这样,也就构成了初学者的难点,但是天下武功,万变不离其宗,理解其中的原理,即使做不到游刃有余,也能在遇到突发情况时不至于慌乱手脚.总结起来,大致是如下心法:

1.创建数据源

2.创建Adapter.并且将Adapter和数据源绑定在一起.

3.将装载好的Adapter绑定到我们想要展示的控件上面.

 

心法中提到了数据源,常见的数据源有String类型的数组用来存放一些文本方面的信息,也有可能是int型的数组用来存放资源的ID,更复杂点的,list集合,里面的元素类型是一个Map容器,这些都在具体使用中时慢慢去体会,也很好理解.

既然有不同类型的数据源,那当然需要有不同类型的适配器与之相匹配嘛,这里重点介绍三种类型的适配器(实际上是目前我就会这三种...)

1.ArrayAdapter

ArrayAdapter的主要应用场景是用来显示八大基本数据类型以及String类型数据的文本信息,个人目前觉得其用法局限性还是有一些的,不过正是因为如此,其用法也非常简单,不多说,上代码!未完待续~!

 

 

 

http://www.lryc.cn/news/2413749.html

相关文章:

  • CSS进阶之grid网格布局 (三):关于grid布局、grid-container属性、grid-items属性
  • 升级AndrOid4.3,三星S4升级Android 4.3系统后应用停止运行的解决办法图解
  • Ageia的PhsyX遭破 无需物理卡即可开启
  • PHP自学网:自学者的良师益友
  • GOM和GEE引擎黑屏不显示界面,装备地图怪物的解决方法
  • PHP Socket编程指南:从入门到精通
  • VC6.0 工程转到VS2008一些问题的描述及解决方法(附有VS2008发布程序介绍)
  • electron 自动更新之路总结( 下)客户端 autoUpdate
  • Summer——从头开始写一个简易的Spring框架
  • _T 未定义错误
  • Python logging 日志模块及代码示例
  • s5830刷机
  • fifo最小深度的计算
  • 安装flash player debug版本遇到的一些问题
  • JAVA Socket详解
  • 并行计算和并行计算机体系结构
  • [原创]关于老板新建议的两个引擎的介绍
  • 代理IP是否会导致网络连接变慢?
  • 谷歌搜索语法,2024年最新2024-2024字节跳动网络安全面试真题解析
  • Matlab 2010b再次打开安装问题
  • 《Windows核心编程》---剪贴板
  • 塔防中的路径查找
  • 创意绝佳的格子广告网站“1百万像素网”
  • 主流论坛比较
  • C语言经典例程100例
  • 网络史话 因特网简史
  • python:实现网站自动登录(附完整源码)
  • 给screen命名
  • VC----Windows多线程
  • CRect类