深入Android- AdapterView与ListView

手把手教你用LDR9201芯片DIY高性能Type-C耳机转接头(附电路图) 本文详细介绍了基于LDR9201芯片DIY高性能Type-C耳机转接头的完整实战教程。从芯片选型、电路设计、元器件采购到焊接调试,手把手指导如何打造一个免驱兼容、支持高解析度音频且可通过EEPROM深度定制功能的专属转接头。重点解析了LDR9201作为高度集成的USB音频控制器SoC的优势,并提供了核心电路图与配置指南,适合电子爱好者和硬件开发者实践。 阅读详情



一,前言


    ListView和GridView作为一个常用的控件,基本上每一个app都要用到,本文透过相关资料,试图为大家解开Android开发中的那些疑问,同时也探讨Android部分源代码的本质。

  本文引用的资料,由于时间关系,不多做翻译。

  阅读本文前,我认为读者应该具备基本的Android相关知识,如Activity/View的基本原理及使用。


二,相关知识储备


系统框架


      
      从Android的系统框架结构上看,我们这次要了解的是处于Application Framework层的View部分.


类层次关系


从类的层次关系上可以明显看到,ViewGroup是View的子类,而ListView和GridView则分别继承自AdapterView.

ViewGroup:

http://developer.android.com/reference/android/view/ViewGroup.html

A ViewGroup is a special view that can contain other views (called children.) The view group is the base class for layouts and views containers. This class also defines the ViewGroup.LayoutParams class which serves as the base class for layouts parameters.

Also see ViewGroup.LayoutParams for layout attributes.

顾名思义,ViewGroup是一个或者多个View的组合,它提供Layout服务,把多个View组合成一个复杂视图。

ViewGroup里面有一个重要的概念:Layout,定义其子视图的Layout。

      

Layout:

  http://developer.android.com/guide/topics/ui/declaring-layout.html

                   

   A layout defines the visual structure for a user interface, such as the UI for an activity or app widget. You can declare a    layout in two ways:

   Declare UI elements in XML . Android provides a straightforward XML vocabulary that corresponds to the View classes and    subclasses, such as those for widgets and layouts.
  Instantiate layout elements at runtime . Your application can create View and ViewGroup objects (and manipulate their      properties) programmatically.

Layout是一个定义UI控件的可视结构体,可以用XML声明或运行时实例化,下图展示了Layout和View之间的关系。

 以下以最常用的LinearLayout作例子,描述Layout的本质,其它几种Layout本质也是一样,需要了解的朋友参阅相关资料即可:

 http://developer.android.com/guide/topics/ui/layout/linear.html

 LinearLayout is a view group that aligns all children in a single direction, vertically or horizontally. You can specify the layout direction with the android:orientation attribute.

请注意其描述中的:single direction,这个就是LinearLayout所遵循的规则和限制。

再对比Linear Layout和Relative Layout的差异,本质上是一样的,只是应用的场景不同。

根据上面的资料,我们不难得出ViewGroup和View之间的关系:

http://www.cnblogs.com/duguguiyu/archive/2010/03/27/1698515.html

        通过上面的一系列的分析,我们基本知道了有关于Android中一个View的来龙去脉,接下来我们会对AdapterView和ListView进行一步的讲解。
        继承层次:
        
        ListView继承自AdapterView的子类AbsListView,而且ListView跟GridView是兄弟关系。

         AdapterView:

          

        AdapterView是一个以具体的Adapter驱动的视图,如何去理解这句话:

1,不管ListView,还是GridView,还是Gallery,它的本质是存储着一分表格形式的数据。而这份数据如何进行展现,根据指定的Adapter,它会呈现成列表,表格或图库的模式。

2,AdapterView有具体处理用户输入的能力,所以相应的它可以设置listener。

        
          ListView:

            

         
        从上面的分析中,继续往下解剖之后,剩下的事情很简单,就是ListView是一个使用了某一种Adapter的线性列表视图,只要指定具体的Adapter(如ArrayAdapter),就呈现出具体的样式。
        看到这里,我相信大家会更明白,为什么ListView需要绑定一个Adapter;以及往后如果需要对类似的View进行扩展的时候,应该如何做。

        引入childView:

        由于每一个Layout,本身就是View的子类,所以,当我们需要指定自已的View,可以很简单的在xml里面指定一个layout,然后find它,把它转换成layout,然后把自定义的view加到layout里面,范例代码如下:


        public View getView(int position, View convertView, ViewGroup parent) {
              LayoutInflater inflater = (LayoutInflater) context
                                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              View rowView = inflater.inflate(R.layout.list_analystics, parent, false);
              
              DemoStatistics statistics = new DemoStatistics();
              View subView = statistics.setData(context);
              LinearLayout ly = (LinearLayout) rowView.findViewById(R.id.statistics);
              ly.addView(subView);
              
              return rowView;
        }

        
相关的源代码在线查看资源有:
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/1.6_r2/android/widget/AdapterView.java?av=f

本文参考了大量的网上资料,因为比较多,不一一列出。



halcon算子翻译——connection 算子:connection(Region : ConnectedRegions : : ) 功能:分离一个区域中相连接的部分(变成多个区域)。 输入参数: Region:输入一个区域; 输出参数: ConnectedRegions: ———————————————— 版权声明:本文为优快云博主「机器人自动化控制」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/haier123888/article/details/1 阅读详情

相关推荐

焦距与视差的关系及其对深度估计的影响

焦距在立体视觉中的作用至关重要,它直接影响视差的大小,从而影响深度估计的精度。焦距越长,视差差异越大,物体的深度估计就越精确。这一关系使得焦距长的相机在一些需要高精度深度估计的应用场景中更加优越。了解焦距与视差的关系,对于优化相机配置和提升深度估计精度具有重要意义。在实践中,选择合适的焦距对于获得精确的深度信息至关重要,特别是在自动驾驶、虚拟现实、三维重建等领域,精确的深度估计能够提供更好的用户体验和技术支持。

计算机科学与技术专业学生的成长之路 1671

AdapterView和Adapter及其子类的使用

Android 适配器使用

qq_38056514的博客 1028

ASPP - 空洞空间金字塔池化

文章目录1 空洞卷积1.1 空洞卷积的理解1.1.1 一维1.1.2 二维1.2 空洞卷积的优劣2. ASPP3. 代码 1 空洞卷积 1.1 空洞卷积的理解 1.1.1 一维 (a) 正常卷积:输入特征 Input feature,kernel = 3,stride = 1,pad = 1,输出特征 Output feature。 (b) 空洞卷积:与图 (a) 不同之处在于 pad = 2,同时引入一个 rate = 2(表示卷积核中参数间间隔的超参)。   还可通过下图进一步理解普通卷积与空洞卷

晓野豬 2万+

android中view组件有哪些,Android:ListView与AdapterView全面解析

前言ListView在Android开发中十分常见今天,我将为大家带来ListView与AdapterView全面解析,含其特点、工作原理等,希望你们会喜欢。目录示意图1. 简介Android中的一种列表视图组件继承自AdapterView抽象类,类图关系如下示意图2. 作用集合多个 “项”(称为:Item) & 以列表的形式 展示示意图3. 工作原理3.1 本质原理ListView仅作为...

weixin_39633774的博客 460

气象数据收集

国家气象信息中心-中国气象数据网 (cma.cn)国家气象信息中心-中国气象数据网 (cma.cn)预报数据:需要定制,收费10万+路面数据同化系统,实时。

weixin_42209537的博客 3487

LightTools宏 vs Python API:光学仿真自动化方案选型指南

本文深入对比了LightTools光学仿真自动化中VBA宏与Python API两种方案。VBA宏内嵌易用,适合固定流程批处理;Python API生态强大,尤其在参数优化算法集成方面优势显著,便于构建复杂工作流。文章结合案例,为不同场景下的技术选型提供清晰指南。

garlic的博客 940

Carson带你学Android:全面解析列表ListView与AdapterView

目录AdapterView简介AdapterView本身是一个抽象类,AdapterView及其子类的继承关系如下图: 特征: AdapterView继承自ViewGroup,本质是个容器 AdapterView可以包含多个“列表项”,并将这多个列表项以合适的形式展示 AdapterView显示的列表项内容由Adapter提供 它派生的子类在用法上也基本相似,只是在显示上有一定区别,因此把他们也归

Carson带你学Android 1万+

Tribon Vitesse开发教程(一)

Tribon Vitesse简介 Tribon Vitesse是Tribon提供给Python编程语言的编程接口,它是一系列的API。使用Python的语法调用这些API,结合Python语言自身的语法生成的程序叫做Vitesse程序。Vitesse是法语“速度”的意思,读作“为戴斯”。使用Tribon Vitesse可以直接访问Tribon产品信息模型和使用Tribon应用程序的功能,以控制设计

forevermemory的专栏 2593

UI组件之AdapterView及其子类(一)三种Adapter适配器填充ListView

AdapterView的内容一般是包含多项相同格式资源的列表,常用的有5种AdapterView的子类: (1)ListView:简单的列表 (2)Spinner:下拉列表,给用户提供选择 (3)Gallery:缩略图,已经被水平的ScrollView和ViewPicker取代,但也还算常用,是一个可以把子项以中心锁定,水平滚动的列表 (4)GridView:网格图,以表格形式显示资源,可

tuke_tuke的博客 7888

JavaFX 概述

要从 JavaFX 中充分受益,了解 JavaFX 的设计方式以及对 JavaFX 包含的功能有一个很好的概述是很有用的。本文的目的是为您提供 JavaFX 概述。本文将首先介绍一般的 JavaFX 设计,然后介绍 JavaFX 中的各种特性。如果您熟悉 Flash/Flex,您会发现 JavaFX 在某种程度上受到了 Flash/Flex 的启发。JavaFX 中也有一些相同的想法。一般来说,JavaFX 应用程序包含一个或多个对应于窗口的阶段。每个阶段都有一个场景。

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 407

基于高频变压器的隔离式推挽栅极驱动电路

摘要:本文介绍了一种基于高频变压器的隔离式推挽栅极驱动电路,通过变压器实现电气隔离,为功率MOS管提供可靠驱动信号。电路包含输入侧PWM信号处理、变压器磁耦合隔离传输以及副边驱动逻辑等关键部分,利用电阻电容网络控制开关速度并防止误触发。该隔离驱动方案广泛应用于高压开关电源、新能源汽车电机控制器、光伏逆变器和工业变频器等需要高电压隔离及抗干扰能力的电力电子设备中,有效保障系统安全性和可靠性。

qq_37999850的博客 483

UI组件之AdapterView及其子类关系,Adapter接口及其实现类关系

AdapterView本身是一个抽象基类,它派生的的子类在用法上十分相似。AdapterView直接派生的三个子类:AbsListView,AbsSpinner,AdapterViewAnimator,这三个子类依然是抽象的,实际应用中往往采用它们的子类。AdapterView 的子类是内容由 Adapter 来决定的视图类,就是说其实显示的组件。 AdapterView有如下特征: 1,

tuke_tuke的博客 3438

VN5620以太网测试——环境搭建篇

CANoe(CAN open environment)VN5620 :是一个紧凑而强大的接口,用于以太网网络的分析、仿真、测试和验证。VN5620 接口支持各种可能的应用。它适用于与其他总线系统、网络参与(例如在模拟和生成帧、测试中的负载和错误)的同步以太网监控。在2021年Vector公司的以太网接口卡VN5610和VN5640设备已经陆续停产,相应被VN5620和VN5650代替。

诊断协议那些事儿's blog 8928

Android开发:ListView、AdapterView、RecyclerView全面解析

目录ListView、AdapterView、RecyclerView全面解析.pngAdapterView简介AdapterView本身是一个抽象类,AdapterView及其子类的继承关系如下图:AdapterView及其子类的继承关系.png特征:AdapterView继承自ViewGroup,本质是个容器AdapterView可以包含多个“列表项”,并将这多个列表项以合适的形式展示Adap...

大灰狼的小绵羊哥哥的博客 869

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android开发10.1:UI组件适配器AdapterView(创建ListView,Adapter接口)-更新20130912

@version:Android4.3 API18 @author:liuxinming 概述               AdapterView继承了ViewGroup,它的本质是容器               AdapterView 可以包含多个 “列表项”,并将多个“列表项”以合适的形式显示出来               AdapterView显示的多个“列表项”由Adapt

巴途Way,专注Go,PHP,C开发 3822

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

adapterview android,[Android]ListView+AdapterView

在设计ListView的时候,因为采用了ListView的单击与List中Button的混合事件监听方案,所以不得不自己重写一个AdapterView来重载Button的监听。自定义ListView的Adapter继承自BaseAdapter,其中有3个方法需要特别注意1、getView在这个方法中,完成自定义ListItem的绘制工作,还可以修改各种布局参数,当然Button的监听也需要在这里实...

weixin_42115074的博客 166

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android ListView 及adapterView的使用

ListView是android常用的组件之一,经常会在滑动侧边栏,商品列表等。使用ListView一般有以下5种方式 使用资源数组 使用ArrayAdapter 使用SimpleAdapter 继承BaseAdapter 继承ListActivity 一.使用资源数组 这种方式非常简单,但是显示比较单一,只适合简单的业务需求。 使用方法: 1.在资源文件中定义数组 &...

大新工作室 208

Android 系统(188)---Android开发:ListView、AdapterView、RecyclerView全面解析

Android开发:ListView、AdapterView、RecyclerView全面解析目录ListView、AdapterView、RecyclerView全面解析.pngAdapterView简介AdapterView本身是一个抽象类,AdapterView及其子类的继承关系如下图:AdapterView及其子类的继承关系.png特征:AdapterView继承自ViewGroup,本质...

zhangbijun1230的专栏 460

Android快速入门之使用AdapterView展示不同风格的列表

在面向对象的程序设计中接触过MVC模式,其实现原理:数据模型M(Model)负责存放数据,通过控制器C(Controller)将数据显示到相应的试图上(View)。在Android中也有类似的控件,它不像之前的控件那样拖拽到界面上,而是通过适配器将某些样式的数据添加到其上使用,这样的控件就是AdapterView。

龙源IT 的博客 1120

android Adapter,AdapterView,AbsListView,ListView

ListView完全解析 ListView完全解析 Adapter分析 在android中,列表控件之前一直是ListView,现在是RecyclerView。 关于ListView, 关联的类(或接口)有Adapter,AdapterView,AbsListView,ListView。 首先看一下最简单的Adapter. Adapter分析 既然和Adapte...

Cat的专栏 527

Android用户界面 UI组件--AdapterView及其子类(一) ListView及各种Adapter详解

ListView就是列表组件,一般通过继承ListActivity使用系统提供的ListView. 所有的AdapterView组件都需要有一个对应的Adapter作为适配器来显示列表中元素的布局方式 见思维导图 AbsListView的常用XML属性: android:choiceMode 设置ListView的选择行为 none:不...

weixin_30706691的博客 256

Android:ListView与AdapterView全面解析

引自: https://www.jianshu.com/p/4e8e4fd13cf7 非常详细

weixin_42007220的博客 205

新人第一篇_android_开发ScrollView嵌套GridView、ListView等AdapterView控件时发生滑动冲突的解决方案

@TOC_android_开发ScrollView嵌套GridView、ListView等AdapterView控件时发生滑动冲突的解决方案 关键在于需要重写GridView的onMeasure()方法,直接上图: 第一步,新建一个继承GridView的MyGridView类,并重写onMeasure() 在xml文件中写GridView标签时,修改以下改动: 原来的是这样的 只需要把Grid...

理想万岁万万岁的博客 246

android onitemclick参数,android – 在OnitemClick()方法中,AdapterView <?>是什么意思?其中的其他参数有什么用?...

here。onItemClick(AdapterView parent,View view,int position,long id)parent The AdapterView where the click happened.view The view within the AdapterView that was clicked (this will be a view provided b...

weixin_42372731的博客 499

android 动态移除view,揭秘在ListView等AdapterView上动态添加删除项的陷阱

如何避开在ListView等AdapterView上动态添加删除项的陷阱,下面就为大家分享,具体内容如下首先,定义如下array资源,作为列表的加载内容:MyListViewJavaCC++PHP然后简单地写下布局文件,由于我需要不管列表有多长,始终在底部显示编辑框和按钮,所以将ListView中的layout_weight设为1。xmlns:android="http://schemas.and...

weixin_26716079的博客 439

AdapterView及其子类之一:基本原理(ListView、ListActivity类型)

参考《疯狂android讲义》2.5节 1、AdapterView一般用于显示列表项,其内容由Adapter提供。调用Adapter的setAdapter(Adapter)方法设置Adapter即可。 AdapterView继承自ViewGroup,它的本质是容器。 2、几个重点类的继承关系 (1)Adapter: java.lang.Object

jediael_lu的专栏 1751
上一篇: Android开发学习 之 四、Activity
下一篇: 天天读报-2012-10-21
WingSu
博客等级 码龄23年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值