二、使用方式

  分两种场景,以代码的形式来展示使用方式,以下均选中第2行:

  1.SimpleAdapter
模拟数据,其中_id类似于数据库中的主键,主键名一定要带有”_id”,Android好这口。虽然不是从数据库获取的数据,但最好也要遵从这种习惯。

ArrayList> classic = new ArrayList>();HashMap englishMap = new HashMap();englishMap.put(“classic_id”,1l);
englishMap.put(“name”,lileilei);
englishMap.put(“gender”,male);
englishMap.put(“classic _id”,2l);
englishMap.put(“name”,hanmeimei);
englishMap.put(“gender”,female);
englishMap.put(“classic _id”,3l);
englishMap.put(“name”,poly);
englishMap.put(“gender”,male);//创建SimpleAdater

SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, R.layout.classic,new String[] { " classic _id", "name", "age" }, new int[] {R.id.id_text, R.id.name_text, R.id.age_text });//设置监听器

ListView lv = this.findViewById(R.id.listview);lv.setAdapter(simpleAdapter);
lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView parent, View view,int position, long id) {Log.i(LOG_TAG, "position:" + position);//输出1
Log.i(LOG_TAG, "id:" + id);//输出1
Log.i(LOG_TAG, "item class : "+ ((ListView) parent).getItemAtPosition(position).getClass().getSimpleName());//输出item class : HashMap//由于上面第三条日志信息输出的类型为HashMap,所以采用HashMap的方式获取数据。

HashMap englishMap = (HashMap) ((ListView) parent).getItemAtPosition(position);if (englishMap!= null && englishMap.size()> 0) {//做其他操作

}
}
});

2. CursorAdapter

//从数据库中获取数据,同样,返回的Cursor中必须含有”_id”的字段。

Cursor cursor = .....;//写一个查询数据的方法并返回一个Cursor对象;//创建SimpleCursorAdapter

SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(this,R.layout.person, cursor, new String[] { " classic _id ", "name", "age" },new int[] { R.id.id_text, R.id.name_text, R.id.age_text });//设置监听器

ListView lv = this.findViewById(R.id.listview);lv.setAdapter(simpleCursorAdapter);
lv.setOnItemClickListener(newOnItemClickListener() {@Overridepublic void onItemClick(AdapterView parent, View view,int position, long id) {Log.i(LOG_TAG, "position:" + position);//输出1
Log.i(LOG_TAG, "id:" + id);//输出2
Log.i(LOG_TAG, "item class : "+ ((ListView) parent).getItemAtPosition(position).getClass().getSimpleName());//输出item class : SQLiteCursor
//由于上面第三条日志信息输出的类型为SQLiteCursor,所以采用Cursor的方式获取数据。

Cursor cursor = (Cursor) ((ListView) parent).getItemAtPosition(position);if (cursor != null && cursor.moveToPosition(position)) {//做其他操作

}
}
});

四、总结

  目前还是要重点使用positon为上策,更复合程序员的编程习惯(下标以0开始);而id存在一定的变数,也许还未领会其实际用途吧,并且不太理解为什么id要是long类型的。
  onItemClickListener()中的position和id就是这样实现的,那与之相类似的监听器也是如此。毕竟监听器是实际开发中经常用到的,所以弄懂细枝末节还是有必要的。

Android 分析监听器上的参数position和id(一)

转载于:https://www.cnblogs.com/vus520/archive/2011/08/27/2561931.html

Android 分析监听器上的参数position和id(二)相关推荐

  1. Android在针式打印机上通过ESC/P指令打印二维码

    Android在针式打印机上通过ESC/P指令打印二维码 前言 正文 前言 最近有个需求就是在rk3399上通过usb口打印发票单,各大品牌的针式打印机几乎都没有Android平台的SDK,后查找相关 ...

  2. android multipartentity 怎么上传参数,android-通过MultipartEntityBuilder通过HTTP表单上传文件,并显示进度b...

    android-通过MultipartEntityBuilder通过HTTP表单上传文件,并显示进度b 短版本-.jar已弃用,其升级版本java.lang.NoClassDefFoundError在 ...

  3. android 编译之后黑屏_抖音BoostMultiDex:Android低版本上首次启动时间减少80%(一)...

    我们知道,Android 低版本(4.X 及以下,SDK < 21)的设备,采用的 Java 运行环境是 Dalvik 虚拟机.它相比于高版本,最大的问题就是在安装或者升级更新之后,首次冷启动的 ...

  4. android中监听的作用,Android里的AdapterView中OnItemClickListener监听器四个参数的含义...

    对Android开发中的Adapter接口的onItemClickListener监听器四个参数(arg)的理解: 代码:public void onItemClick(AdapterView> ...

  5. Fruit Ninja(水果忍者)游戏源代码下载、分析(上)---可运行Android,Ios,Window,Mac,Html5平台

    背景: 本来打算下一个游戏是涂鸦跳跃的,因为图片资源没准备好,暂时往后推迟.刚好笔者手头上有部分水果忍者的游戏素材,于是上周末花了一些时间把水果忍者实现了:以前读大学的时候这款游戏就风靡大街小巷,记得 ...

  6. 【SemiDrive源码分析】【MailBox核间通信】45 - Android侧 RPMSG_IPCC_RPC驱动分析(上) 之 RPMSG设备 与 RPMSG驱动 匹配过程分析

    [SemiDrive源码分析][MailBox核间通信]45 - Android侧 RPMSG_IPCC_RPC驱动分析(上) 之 RPMSG设备 与 RPMSG驱动 匹配过程分析 一. IPCC_R ...

  7. Spring Boot 2.x 启动全过程源码分析(上)入口类剖析

    转载自   Spring Boot 2.x 启动全过程源码分析(上)入口类剖析 Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boo ...

  8. Android Bitmap史上最详细全解 | 原力计划

    作者 | ༺ IF ༻ 责编 | 王晓曼 出品 | CSDN博客 Bitmap的相关使用 关于 Bitmap ,之前以为它和 Drawable 差不多,就是一种图片,直到泪水打湿了我胸前的红领巾,我决 ...

  9. 【Android】线上自助点餐系统

    [Android]线上自助点餐系统 效果视频 商品选购界面 效果图 商品数据 商品标题文件 商品详细文件信息 商品图片 添加商品数据 解析左侧标题数据 解析右侧商品数据 左侧标题与右侧商品双向绑定 加 ...

最新文章

  1. 如何使用PHP解析JSON文件? [重复]
  2. VMWare虚拟机迁移时,打开后提示主机不支持 CPUID 错误
  3. ZOJ3261并查集逆向处理
  4. 我的2017年文章汇总——Java及中间件篇
  5. Windows 搭建 C/C++ 开发环境之Eclipse
  6. perform build_lc_system_stat
  7. netcore读取json文件_【NET Core】.NET Core中读取json配置文件
  8. Android Studio、 补充知识以及主要组件
  9. 前端xss攻击的原理
  10. Python 2.5.7 高阶函数
  11. 此页的状态信息无效,可能已损坏---应用程序中的服务器错误---
  12. Mysql 数据库中Where 关键字的使用
  13. 单例模式(Single)
  14. dubbo源码分析第七篇一服务暴露第三小节一远程暴露内核剖析
  15. ArcGIS计算面状河流的长度(河流中心线)
  16. 解决Pr cc 2019主页加载不出来的问题
  17. 恐怖的计算机病毒,电脑上突然出现恐怖病毒,有没有吓到你
  18. 用MATLAB绘制高斯分布曲线
  19. python输入一组数据找出被七除余一的数_C程序设计实验-1-7.doc
  20. 鼠标移入图标显示二维码功能实现

热门文章

  1. Vue实战(六)通用Table组件
  2. floating输入 高阻输入_STM32 GPIO八种输入输出模式
  3. L2-030 冰岛人 (25 分)-PAT 团体程序设计天梯赛 GPLT
  4. L1-073 人与神 (5 分)-PAT 团体程序设计天梯赛 GPLT
  5. 蓝桥杯 ALGO-120 算法训练 学做菜
  6. 1006. Sign In and Sign Out (25)-PAT甲级真题
  7. 克服跨洋网络延迟,使用Docker Hub Mirror加速Docker官方镜像下载
  8. 广西龙脊梯田景区发生山体崩塌
  9. 13.3 mysql常用命令
  10. linux shell脚本编程笔记(三): 三种引号的区别