`
lukew
  • 浏览: 51646 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

J2me的List总结

阅读更多
List控件是使用频率非常高的显示控件之一了。但是最近发现它的一点不足。
那就是getSelectedIndex()函数,一般情况下它都能正常工作。唯有在List处于复选模式(MULTIPLE)时,使用该函数无法获得当前高亮条选中索引,而总是返回-1。

参考List控件的源代码,可以发现,List类实现了Choice接口,并且包含一个ChoiceGroup成员。它才是实现List大部分功能的大功臣。
List类的getSelectedIndex()方法,实际上就是ChoiceGroup的getSelectedIndex()方法。大家可以参考Doc中关于ChoiceGroup的getSelectedIndex()方法的如下部分。
“For ChoiceGroup objects of type MULTIPLE, this always returns -1 because no single value can in general represent the state of such a ChoiceGroup.”

就是说,List在多选模式(MULTIPLE)下,我们是无法获取当前高亮条所在项的索引值的。
当然,你可以自己数数。

也许你觉得这个问题不算严重,也许吧。但我觉得对于程序员来说,最严重的问题就是理解发生偏差。
比如我,在发现这个问题之前。凭借多年的编程经验,我很确定很确定的认为,这个getSelectedIndex()永远能够获得当前光标所指项的索引值。
……当错误来临时,我百思不得其解。最后,花了好些时间去调试才发现,那个值总等于-1。操!花了太多时间去猜测原本正确的代码。
我只想告诉大家,真正耗费时间最多,让人最恶心的错误,往往就是这样的问题。再操!

那么有什么简单的解决办法么?
我可以很负责任的告诉你,自己写一个多选的List控件吧,记住不要让getSelectedIndex()总返回-1。即使是多选,有时候也是需要这个值的。

也许你想继承List,然后重载getSelectedIndex()方法。但你无法重载List的keyPressed方法(其实List等Screen控件都用Canvas写的)。
……或许还能想到别的什么好办法。不过我的选择是自己写一个List控件代替它(如果对它感兴趣,请回复,改天我在弄出来吧)。

至于List的其它功能,就没什么重复的必要的,看看文档吧。
分享到:
评论

相关推荐

    J2ME简单实现list与form页面的切换

    ### J2ME简单实现List与Form页面的切换 在Java ME(J2ME)平台下,开发者经常需要处理用户界面的交互逻辑,特别是在小型设备上(如旧式手机)。本文将详细解析一个简单的示例代码,该代码展示了如何在不同类型的...

    J2ME课程总结+大三复习

    【J2ME课程总结】 J2ME,全称Java Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发。本总结主要涵盖J2ME中GUI界面、lcdui包、图形图像处理、键盘事件处理、位运算和内存空间问题以及游戏...

    j2me_list.rar_j2me

    根据压缩包内的文件名"j2me_list.java",我们可以推测这可能是一个J2ME程序,用于生成和显示J2ME目录。在Java中,"list"常常与数据结构列表或显示列表的操作有关,比如列出文件夹中的文件或者展示某种信息的列表。在...

    J2ME平台的RSSReader

    总结来说,J2ME平台的RSSReader是一个综合运用了网络通信、XML解析、数据存储、用户界面设计以及多线程和错误处理技术的典型示例。它展示了如何在资源有限的环境中构建功能丰富的移动应用。通过深入理解这些技术,...

    基于J2ME的手机通讯录代码

    总结来说,基于J2ME的手机通讯录代码利用了J2ME的RMS系统存储联系人数据,通过用户界面实现添加、删除和查看联系人等功能。开发者需要理解J2ME的架构、RMS机制,以及如何在有限的资源下构建用户友好的交互。这种技术...

    J2ME 手机程序开发

    **J2ME手机程序开发——高级界面开发:Command事件与List** 在移动设备上开发应用程序时,用户界面的友好性和易用性至关重要。Java 2 Micro Edition (J2ME) 提供了丰富的工具和框架来构建这样的界面。本教程主要...

    J2ME-API.zip_ME_j2me api_j2me jdk_java me api

    - **MIDP**:移动信息设备配置提供了用户界面组件(如Form、List、ChoiceGroup等)、网络连接(如HttpConnection)和文件系统访问等功能。 - **CLDC**:连接受限设备配置,主要用于内存和处理能力有限的设备,提供了...

    J2ME Tutorial中文版

    J2ME提供了一些基本的图形用户界面组件,如TextBox、ChoiceGroup和List,用于创建简单的用户界面。同时,还可以自定义Canvas类来创建更复杂的视图。 ### 网络通信 MIDP提供HttpConnection API,允许应用程序通过...

    J2ME考试复习试题

    根据给定的文件信息,我们可以总结出一系列关于J2ME(Java 2 Micro Edition)的知识点,这些知识点主要围绕J2ME的基础概念、编程实践以及特定API的使用展开。 ### J2ME概述 J2ME是一种针对嵌入式设备和消费电子...

    J2ME高级界面控件演示程序Eclipse

    总结,"J2ME高级界面控件演示程序Eclipse"是学习和实践J2ME界面开发的宝贵资源,通过实际操作,开发者可以掌握更多高级界面设计技巧,提升J2ME应用的用户体验。源代码的实践将巩固理论知识,是迈向专业J2ME开发者的...

    关于j2me学习方法

    - MIDP提供了两种级别的UI组件:高级UI组件如`Form`, `List`等,以及低级UI组件如`Canvas`,后者允许开发者进行更为复杂的图形绘制操作。 ##### 2. GUI组件 - `Graphics` 类提供了2D绘图支持,用于在`Canvas`上绘制...

    J2ME手机聊天室例子

    总结来说,J2ME手机聊天室例子展示了如何在移动设备上实现基本的即时通讯功能。它涉及到了UI设计、网络通信、数据序列化和安全策略等多个方面,是学习J2ME编程和移动应用开发的一个实用示例。通过理解和实践这个例子...

    j2me开发的 名片册

    总结来说,"j2me开发的名片册"是一个学习J2ME平台和数据存储的良好实践项目,涵盖了移动应用开发的基本要素,包括UI设计、业务逻辑实现以及数据持久化。通过这样的项目,开发者可以深入理解J2ME的工作原理,提升移动...

    A算法使用j2me实现

    - 可能涉及的数据结构包括但不限于:开放列表(open list)和关闭列表(closed list),以及用于存储父节点的数组。 ### 总结 通过对这段代码的分析,我们可以看出在J2ME平台上实现A*算法的关键步骤,包括创建显示...

    J2ME 通用九宫格菜单

    总结,J2ME中的九宫格菜单是通过自定义`Grid`类实现的,结合`List`和`TitleAndMenu`来构建一个功能完整且易于操作的界面。这样的设计既符合移动设备的小屏幕特性,又能提供丰富的功能选择,是J2ME应用设计的一个实用...

    J2ME手机电话本实例

    总结来说,通过J2ME手机电话本实例,我们可以学习到如何在有限的移动设备资源上进行开发,包括用户界面设计、数据存储、网络通信以及事件处理等方面的知识。这不仅有助于提升编程技能,也为后续更复杂的移动应用开发...

    J2ME开发大全J2ME开发大全

    总结来说,J2ME提供了一套全面的框架来开发移动和嵌入式设备的应用。开发者需要熟悉配置和profile的概念,掌握MIDP的UI组件、网络编程、数据存储和性能优化,同时了解如何管理和分发J2ME应用。通过深入研究提供的源...

    J2ME邮件收发的客户端

    总结,J2ME邮件收发客户端的核心在于理解和实现SMTP和POP3/IMAP协议,结合J2ME的API进行网络通信和用户交互。在实际项目中,还需要关注性能、安全性和用户体验等多个方面。通过阅读和学习提供的源码,可以深入理解这...

    J2ME 开发的网络聊天系统

    总结起来,J2ME提供了一套完整的框架,使得开发者能够构建功能丰富的网络聊天系统。虽然它的资源有限,但通过精巧的设计和有效的编程技巧,可以创造出高效且用户友好的聊天应用。无论是简单的文本交流还是集成游戏...

Global site tag (gtag.js) - Google Analytics