Android 分析监听器上的参数position和id(二)
二、使用方式
分两种场景,以代码的形式来展示使用方式,以下均选中第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(二)相关推荐
- Android在针式打印机上通过ESC/P指令打印二维码
Android在针式打印机上通过ESC/P指令打印二维码 前言 正文 前言 最近有个需求就是在rk3399上通过usb口打印发票单,各大品牌的针式打印机几乎都没有Android平台的SDK,后查找相关 ...
- android multipartentity 怎么上传参数,android-通过MultipartEntityBuilder通过HTTP表单上传文件,并显示进度b...
android-通过MultipartEntityBuilder通过HTTP表单上传文件,并显示进度b 短版本-.jar已弃用,其升级版本java.lang.NoClassDefFoundError在 ...
- android 编译之后黑屏_抖音BoostMultiDex:Android低版本上首次启动时间减少80%(一)...
我们知道,Android 低版本(4.X 及以下,SDK < 21)的设备,采用的 Java 运行环境是 Dalvik 虚拟机.它相比于高版本,最大的问题就是在安装或者升级更新之后,首次冷启动的 ...
- android中监听的作用,Android里的AdapterView中OnItemClickListener监听器四个参数的含义...
对Android开发中的Adapter接口的onItemClickListener监听器四个参数(arg)的理解: 代码:public void onItemClick(AdapterView> ...
- Fruit Ninja(水果忍者)游戏源代码下载、分析(上)---可运行Android,Ios,Window,Mac,Html5平台
背景: 本来打算下一个游戏是涂鸦跳跃的,因为图片资源没准备好,暂时往后推迟.刚好笔者手头上有部分水果忍者的游戏素材,于是上周末花了一些时间把水果忍者实现了:以前读大学的时候这款游戏就风靡大街小巷,记得 ...
- 【SemiDrive源码分析】【MailBox核间通信】45 - Android侧 RPMSG_IPCC_RPC驱动分析(上) 之 RPMSG设备 与 RPMSG驱动 匹配过程分析
[SemiDrive源码分析][MailBox核间通信]45 - Android侧 RPMSG_IPCC_RPC驱动分析(上) 之 RPMSG设备 与 RPMSG驱动 匹配过程分析 一. IPCC_R ...
- Spring Boot 2.x 启动全过程源码分析(上)入口类剖析
转载自 Spring Boot 2.x 启动全过程源码分析(上)入口类剖析 Spring Boot 的应用教程我们已经分享过很多了,今天来通过源码来分析下它的启动过程,探究下 Spring Boo ...
- Android Bitmap史上最详细全解 | 原力计划
作者 | ༺ IF ༻ 责编 | 王晓曼 出品 | CSDN博客 Bitmap的相关使用 关于 Bitmap ,之前以为它和 Drawable 差不多,就是一种图片,直到泪水打湿了我胸前的红领巾,我决 ...
- 【Android】线上自助点餐系统
[Android]线上自助点餐系统 效果视频 商品选购界面 效果图 商品数据 商品标题文件 商品详细文件信息 商品图片 添加商品数据 解析左侧标题数据 解析右侧商品数据 左侧标题与右侧商品双向绑定 加 ...
最新文章
- 如何使用PHP解析JSON文件? [重复]
- VMWare虚拟机迁移时,打开后提示主机不支持 CPUID 错误
- ZOJ3261并查集逆向处理
- 我的2017年文章汇总——Java及中间件篇
- Windows 搭建 C/C++ 开发环境之Eclipse
- perform build_lc_system_stat
- netcore读取json文件_【NET Core】.NET Core中读取json配置文件
- Android Studio、 补充知识以及主要组件
- 前端xss攻击的原理
- Python 2.5.7 高阶函数
- 此页的状态信息无效,可能已损坏---应用程序中的服务器错误---
- Mysql 数据库中Where 关键字的使用
- 单例模式(Single)
- dubbo源码分析第七篇一服务暴露第三小节一远程暴露内核剖析
- ArcGIS计算面状河流的长度(河流中心线)
- 解决Pr cc 2019主页加载不出来的问题
- 恐怖的计算机病毒,电脑上突然出现恐怖病毒,有没有吓到你
- 用MATLAB绘制高斯分布曲线
- python输入一组数据找出被七除余一的数_C程序设计实验-1-7.doc
- 鼠标移入图标显示二维码功能实现
热门文章
- Vue实战(六)通用Table组件
- floating输入 高阻输入_STM32 GPIO八种输入输出模式
- L2-030 冰岛人 (25 分)-PAT 团体程序设计天梯赛 GPLT
- L1-073 人与神 (5 分)-PAT 团体程序设计天梯赛 GPLT
- 蓝桥杯 ALGO-120 算法训练 学做菜
- 1006. Sign In and Sign Out (25)-PAT甲级真题
- 克服跨洋网络延迟,使用Docker Hub Mirror加速Docker官方镜像下载
- 广西龙脊梯田景区发生山体崩塌
- 13.3 mysql常用命令
- linux shell脚本编程笔记(三): 三种引号的区别