Android BaseAdapter无法加载最后一个数组值

Android BaseAdapter无法加载最后一个数组值,android,Android,大家 最近我使用ADT开发了android 2.2程序。程序在模拟器中运行正常,但在实际机器中运行时遇到了一个奇怪的问题 我使用BaseAdapter创建MenuAdapter,它将加载名为ViewHolder的自定义类。自定义类和MenuAdapter都类似于BaseAdapter的任何示例:ViewHolder只有两个变量text和image,没有任何代码。MenuAdapter加载包含文本视图的菜单布局。它将在TextView中分配文本变量,并将其作为警报对话框重复加载 然后,我创建了一个

大家

最近我使用ADT开发了android 2.2程序。程序在模拟器中运行正常,但在实际机器中运行时遇到了一个奇怪的问题

我使用BaseAdapter创建MenuAdapter,它将加载名为ViewHolder的自定义类。自定义类和MenuAdapter都类似于BaseAdapter的任何示例:ViewHolder只有两个变量text和image,没有任何代码。MenuAdapter加载包含文本视图的菜单布局。它将在TextView中分配文本变量,并将其作为警报对话框重复加载

然后,我创建了一个带有以下变量的数组:

public String[] menuOptions={"Browser", "Google Map", "Camera", "Gallery", "Media Player", "Cancel", "Exit"};
然后,我使用AlertDialog.Builder().setAdapter()创建BaseAdapter对象并加载数组。“警报”对话框将继续显示数据集。但它的输出是:

浏览器、谷歌地图、照相机、多媒体资料、媒体播放器、取消、浏览器

最后一项随机更改,我再次加载警报对话框,结果如下:

浏览器、谷歌地图、照相机、多媒体资料、媒体播放器、取消、谷歌地图

浏览器、谷歌地图、照相机、多媒体资料、媒体播放器、取消、多媒体资料

没有出口

所以我想知道,到底发生了什么?为什么不加载所有数据?当我遇到这个问题时,我会尝试将数组减少到

public String[] menuOptions={"Browser", "Google Map", "Camera", "Gallery", "Media Player", "Cancel"};
它正确显示:

浏览器、谷歌地图、照相机、多媒体资料、媒体播放器、取消


MenuAdapter类中没有关于数组加载的数字设置,因此我不理解这一点。

我找到了答案

对话框警报以错误数据显示,因为某些数据显示在屏幕外。Dialog alert将以scroll-y样式显示它们(如果您知道什么是HTML和CSS,那么您就会知道我的意思)

以滚动y样式隐藏的数据将随机显示……例如,当我加载时,我的最后一项“退出”隐藏在屏幕下,我向下拖动屏幕查看,它将随机显示最后一项数据,而不是“退出”

我通过改变每个项目的行高来解决这个问题,使它们变短,使它们在一个屏幕上显示,而不使用滚动y样式,这样它将正确显示数据


我不知道这是不是系统错误

我找到了答案

对话框警报以错误数据显示,因为某些数据显示在屏幕外。Dialog alert将以scroll-y样式显示它们(如果您知道什么是HTML和CSS,那么您就会知道我的意思)

以滚动y样式隐藏的数据将随机显示……例如,当我加载时,我的最后一项“退出”隐藏在屏幕下,我向下拖动屏幕查看,它将随机显示最后一项数据,而不是“退出”

我通过改变每个项目的行高来解决这个问题,使它们变短,使它们在一个屏幕上显示,而不使用滚动y样式,这样它将正确显示数据


我不知道这是不是系统错误

是否可以发布用于加载ListAdapter并将其传递给对话框生成器的代码?是否可以发布用于加载ListAdapter并将其传递给对话框生成器的代码?