AdapterView.OnItemSelectedListener 你真的懂了吗?

AdapterView.OnItemSelectedListener

结构

继承关系

public static interface AdapterView.OnItemSelectedListener

类概述

定义了当选中视图中的项目时调用的回调函数的接口。

公有方法

public abstract void onItemSelected (AdapterView<?> parent, View view, int position, long id)

当选中视图中的项目时执行的回调函数。 实现时如果需要访问与选中条目关联的数据,可以调用 getItemAtPosition(position)。

参数

java代码:

  1. parent 发生选中事件的 AbsListView。
  2. view AbsListView 中被选中的视图。
  3. position 视图在一览中的位置(索引)。
  4. id 被点击条目的行 ID。

复制代码

public abstract void onNothingSelected (AdapterView<?> parent)

当视图中的处于选中状态的条目全部消失时执行的回调函数。 启动触控功能或适配器为空都可能导致选中条目消失。

参数

parent  没有任何选中条目的 AdapterView。

AdapterView.OnItemClickListener

结构

继承关系

public static interface AdapterView.OnItemClickListener

子类及间接子类

直接子类

CharacterPickerDialog, PreferenceScreen

类概述

这个接口定义了当 AdapterView 中一元素被点击时,一个回调函数被调用。

公共方法

public abstract void onItemClick (AdapterView<?> parent, View view, int position, long id)  当 AdapterView 中一元素被点击时,回调方法被调用。

如果需要访问与被选项相关的数据,执行程序可以调用 getItemAtPosition(position)。

参数

java代码:

  1. parent                        发生点击动作的 AdapterView。
  2. view                           在 AdapterView 中被点击的视图(它是由 adapter 提供的一个视图)。
  3. position                      视图在 adapter 中的位置。
  4. id                               被点击元素的行 id。

view——————是你点击的Listview的某一项的内容,来源于adapter。如用((TextView)arg1).getText(),可以取出点击的这一项的内容,转为string类型。

position————是adapter的某一项,如点击了listview第2项,而第2项对应的是adapter的第2个数值,那此时position的值就为1了。

如对应adapter的第3个数值,那此时position的值就为2了。

id———————id的值为点击了Listview的哪一项对应的数值,点击了listview第2项,那id就等于1。

注:这些数值都是从0开始的。

postion与id的区别:

position The position of the view in the adapter.
id The row id of the item that was clicked.

一般情况下,两者的值大小是一样的,但当在ListView添加headerView或者footerView之后,两个值就出现了差别。

例如:对于ListView  mHomeListView

[java] view
plain
copy

  1. TextView textView = new TextView(this);
  2. textView.setText("headerView");
  3. mHomeListView.addHeaderView(textView);

当点击 headerView行时:id=-1, position =0;

当点击 Stand行时:id=0,position=1;

当点击 Far Awa...行时:id=1,position=2;

至此,发现的规律:position是view在 adapterView中的位置,id是被点击元素在总数据adapter行id。

1、举个例子你会理解的更快:X, Y两个listview,X里有1,2,3,4这4个item,Y里有a,b,c,d这4个item。

如果你点了b这个item。如下:

public  void onItemClick (AdapterView<?> parent,    // parent相当于listview  Y适配器的一个指针,可以通过它来获得Y里装着的一切东西,再通俗点就是说告诉你,你点的是Y,不是X - -、

View view,     // view是你点b item的view的句柄,就是你可以用这个view,来获得b里的控件的id后操作控件

int position,    // position是b在Y适配器里的位置(生成listview时,适配器一个一个的做item,然后把他们按顺序排好队,在放到listview里,意思就是这个b是第position号做好的)

long id     // id是b在listview Y里的第几行的位置(很明显是第2行),大部分时候position和id的值是一样的,如果需要的话,你可以自己加个log把position和id都弄出来在logcat里瞅瞅,看了之后心里才踏实

2、//这里的arg2指的是你点击的listview的项的id号,就是点的是哪一条,可以用switch(arg2)来设置,arg2的从0开始

3、AdapterView<?> arg0 参数得意思:官方解释说:the AdapterView where the click happened. 也就是当前点击的adapterview,这个参数是系统自动传入的,我们也不用调用,一般常用第二个和第三个参数。

然后给你讲AdapterView<?> ,这个属于java基础的内容,叫做泛型,就是告诉你传入的参数是哪种类型。 比如String<?>,List<T>,Map<K,V>,String<E>

?表示不确定的java类型。

T  表示java类型。

K V 分别代表java键值中的Key Value。

E 代表Element。

ListView, GridView, Spinner and Gallery 中都要用到adapter,所以这里用问好表示不确定传入的是哪种类型,不用我们关系,系统自动传入。

时间: 2024-11-05 11:49:07

AdapterView.OnItemSelectedListener 你真的懂了吗?的相关文章

你真的懂软件测试吗?

所谓金山银四,又是一波求职月,不安的因素在悸动.测试行业也是如此,作为软件测试员的我也在寻求更好的职业机会,软件测试岗同时也在做筛选,所谓优胜劣汰. 那么面临跳槽季,想在测试行业大展身手的你,真的懂软件测试嘛?小黑板,划重点~ 1.基础知识掌握 这部分,属于对自身的基础能力考查.也是进入测试行业的标准,包括:软件测试原理.软件测试的测试方法了解(刚入行,先了解起来).掌握常见的测试工具(如:UI自动化测试工具TestWriter.开源测试工具QTP.selenium等)等. 2.测试流程掌握 新

Android API 中文(77)——AdapterView.OnItemSelectedListener

前言 本章内容是android.widget.AdapterView.OnItemSelectedListener,版本为Android 2.3 r1,翻译来自"cnmahj",欢迎大家访问他的博客:http://android.toolib.net/blog/,再次感谢"cnmahj"!欢迎你一起参与Android API 的中文翻译,联系我[email protected]. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs

[置顶]云计算乱局:你真的懂,什么叫做云吗?(二)

上一章讲了什么是云,把云的概念给搭建简单的做了分析.这一章我把国内.国外的PaaS平台,即应用托管平台进行了测评对比,包括:国外的AWS.GAE和Windows Azure和国内的京东云擎JAE.百度BAE.新浪SAE.以及阿里云.IBM也宣布了落地国内的计划,IBM的公有云有好几套方案,一个是现有IBM Smarter Cloud的公有云方案,由TSAM和Websphere Pure application这种厚重的企业软件构成,最终在国内落地哪个还不得而知,这里暂不做比较. 比较可以看出,很

javascript的语法作用域你真的懂了吗

有段时间没有更新了,思绪一下子有点转不过来.正应了一句古话"一天不读书,无人看得出:一周不读书,开始会爆粗:一月不读书,智商输给猪.".再加上周五晚上看了下很久没看的湖南综艺节目<天天向上>关于出版书及读书的相关内容,看到相当多的嘉宾家里的书房让我惊叹也伴随着一种文人的向往.我虽然小的时候不太爱看书,但是随着自己一点点的长大,也不知道什么时候开始也有买书藏书看书的情节,而且正如郁钧剑老师所说的藏书有点会上瘾,即使有些书不是马上就会看.挺希望以后不工作了,有自己的一间书屋,一

你真的懂 ajax 吗?

前言 总括: 本文讲解了ajax的历史,工作原理以及优缺点,对XMLHttpRequest对象进行了详细的讲解,并使用原生js实现了一个ajax对象以方便日常开始使用. damonare的ajax库:damonare的ajax库 原文博客地址:你真的懂ajax吗? 知乎专栏&&简书专题:前端进击者(知乎)&&前端进击者(简书) 博主博客地址:Damonare的个人博客 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志. 正文 相信每个前端程序员日常工作中都避免不了的工作就是

【转】was mutated while being enumerated 你是不是以为你真的懂For...in... ??

原文网址:http://www.jianshu.com/p/ad80d9443a92 支持原创,如需转载, 请注明出处你是不是以为你真的懂For...in... ??哈哈哈哈, 我也碰到了这个报错 .究其原因, 顾名思义 "在枚举的时候发生了变化"for...in...利用了快速枚举NSFastEnumerate当我们想要改变数组变量中的数据或者删除数组中的数据的时候,不能用for...in... 应该是Objective-C中的foreach循环与Java中的相似,在内部是用iter

Android AdapterView.OnItemSelectedListener

AdapterView.OnItemSelectedListener Summary Public Methods abstract void onItemSelected(AdapterView<?> parent, View view, int position, long id) Callback method to be invoked when an item in this view has been selected. abstract void onNothingSelecte

云计算乱局:你真的懂,什么叫做云吗?(一)

“云”这个词已经被说得烂到不能再烂了.云计算,云平台,云+端,云服务,云……但与很多行业里的朋友聊天发现,其实大家对云计算到底是怎么个玩意,并不是太了解.作者今天为大家梳理一下,各种各样的“云”,葫芦里都在卖什么药. 云是网络.互联网的一种比喻说法,计算可以理解为计算机,因此云计算的基本模型,就是远程计算服务:用户通过网络连接到计算机上,获取计算服务.而远程计算机,因为规模效应,可以提供比个人计算机强大若干个数量级的计算能力,可以根据用户需求提可供弹性伸缩的计算资源,可以大大降低用户获取相同计算

C# 知识回顾 - 你真的懂异常(Exception)吗?

你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介绍 我们平时在写程序时,无意中(或技术不够),而导致程序运行时出现意外(或异常),对于这个问题, C# 有专门的异常处理程序. 异常处理所涉及到的关键字有 try.catch 和 finally 等,用来处理失败的情况. CLR..NET 自身的类库.其它第三方库或者你写的程序代码都有可能会出现异常