我需要: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)
答案 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个领域的意见。祝你好运,请告诉我们。