如何使用Array、List、HashMap或HashSet创建BitmapFields的长列表?(Java、黑莓)



我需要:1)创建的BitmapFields列表,2)将它们添加到屏幕中。由于列表很长,我想使用一些简短的自动化方法,如Loop或类似的方法:

while (i < 1000)
 {
 i = i + 1;
 myBitmapField[i].setBitmap(Bitmap.getBitmapResource("picture" + i+ ".png"));
 myVerticalFieldManager.add(_myBitmapField[i]);
 }

但我似乎无法将索引I分配给BitmapFieldmyBitmapField[I],只能分配给文件本身的名称。

那么,我如何创建一个长的BitmapFields列表呢?我可以为此使用List、Array、HashMap或HashSet吗?一个受欢迎的例子。非常感谢!(黑莓、Java)

如果您收到该错误,则意味着myBitmapField没有声明为数组类型。您需要将其声明为数组,例如:

BitmapField[] myBitmapField = new BitmapField[1000];
for (int i = 0; i < 1000; i++) {
    myBitmapField[i] = new BitmapField();
}

原则上,您可以使用列出的任何数据类型,尽管只有一个数组可以使用[...]语法进行索引。您只需要更改声明初始化即可使用所需的任何数据类型。如果您使用的类型不支持索引,则必须更改索引才能对所选数据类型使用.get方法。但我不知道你为什么要使用数组以外的任何东西。。。

在这一点上,您还可以将上面的循环与现有的循环结合起来,这样您就只有一个循环。

此外,如果您显示了1000张图像,您可能会有糟糕的性能。BlackBerry很难处理列表中任何类型的1000个字段,而且图像可能相当重。在某些设备上加载甚至可能需要很长时间,以至于黑莓会认为你的应用程序挂起并终止它。更不用说,从用户界面的角度来看,在一个小的移动屏幕上有这么多项目不是很好,因为没有用户能够在合理的时间内导航到所有项目。

我试过你的方法,似乎也不适合我。试试这个:

private pics = new Vector();
for(int i = 0; i < 1000; i++{
    BitmapField temp = new BitmapField();
    pics.addElement(temp);
    ((BitmapField)pics.elementAt(i)).setBitmap(Bitmap.getBitmapResource("picture" + i + ".png"));
    add((BitmapField)pics.elementAt(i));
}

关于1000个字段,我也同意@Ted的观点。祝你好运,让我们知道。

最新更新