如何使用Array,List,HashMap或HashSet - 创建长列表BitmapFields? (Java,Blackberry)

时间:2011-06-21 00:59:01

标签: java blackberry java-me hashmap

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

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

但似乎我无法将索引 i 分配给BitmapField myBitmapField [ i ] 的名称,只能将其命名为归档。

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

2 个答案:

答案 0 :(得分:1)

如果您收到该错误,则表示myBitmapField未声明为数组类型。您需要将其声明为数组,例如:

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

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

此时你也可以将上面的循环与你现有的循环结合起来,这样你就只有一个循环。

此外,如果您显示的是1000张图片,则可能会有可怕的效果。 BlackBerry无法处理列表中任何类型的1000个字段,图像可能相当重量级。甚至可能需要很长时间才能加载某些设备,BlackBerry会认为您的应用程序正在挂起并终止它。更不用说从UI角度来看,在小型移动屏幕上拥有如此多的项目并不是很好,因为没有用户能够在合理的时间范围内导航到所有这些项目。

答案 1 :(得分:0)

我试过你的方式,对我来说似乎也没有。试试这个:

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));

}

我同意@Ted关于1000个领域的意见。祝你好运,请告诉我们。