Как я могу использовать Array, List, HashMap или HashSet - создать длинный список BitmapFields?(Ява, Ежевика) - PullRequest
1 голос
/ 21 июня 2011

Мне нужно: 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 ] , только для имени самого файла.

Так как я могу создать длинный список BitmapFields?Могу ли я использовать List, Array, HashMap или HashSet для этой цели?Пример приветствуется.Большое спасибо!(Blackberry, Java)

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Если вы получаете эту ошибку, это просто означает, что myBitmapField не объявлен как тип массива.Вы можете объявить его как массив, например:

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

В принципе, вы можете использовать любой из перечисленных вами типов данных, хотя только синтаксис [...] может быть проиндексирован только для массива.Вам просто нужно изменить инициализацию объявления, чтобы использовать любой тип данных, который вы хотите.И если вы используете тип, который не поддерживает индексы, вам придется изменить свой индекс, чтобы использовать метод .get для выбранного вами типа данных.Но я не уверен, почему вы захотите использовать что-либо кроме массива ...

И в этот момент вы могли бы также объединить вышеуказанный цикл с существующим циклом, чтобы у вас был только одинloop.

Кроме того, если у вас отображается 1000 изображений, вы, вероятно, будете иметь производительность ужасное .BlackBerry испытывает трудности при работе с 1000 полями любого типа в списке, и изображения могут быть довольно тяжелыми.Загрузка некоторых устройств может даже занять много времени, так что BlackBerry подумает, что ваше приложение зависло и завершило его работу.Не говоря уже о том, что с точки зрения пользовательского интерфейса не очень хорошо иметь так много элементов на маленьком экране мобильного устройства, поскольку ни один пользователь не сможет перейти ко всем из них в разумные сроки.

0 голосов
/ 21 июня 2011

Я пробовал твой путь, похоже, тоже не для меня.попробуйте это:

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 полей.удачи, дайте нам знать.

...