2012-04-07 4 views
1

Привет, я не очень хорошо разбираюсь в Java, поэтому, пожалуйста, несите меня. Я пытаюсь написать очень простое приложение для Android сейчас, и мне нужна помощь в кодировании.Автоматическое добавление элементов в массив

Вещь, у меня есть сервер, который автоматически генерирует .png-файлы и сохраняет их в общедоступный каталог в числовом порядке. Обновление происходит ежедневно и не является исчерпывающим.

Есть ли способ, в котором я могу назначить динамические значения массиву в моем приложении?

  private String[] myRemoteImages = { 
      "http://hypotheticalurl1.png", 
      "http://hypotheticalurl2.png", 
      "http://hypotheticalurl3.png", 
      "http://hypotheticalurl4.png", 
      "http://hypotheticalurl5.png", 
      "http://hypotheticalurl6.png", 
      "http://hypotheticalurl7.png", 
      "http://hypotheticalurl8.png", 
      "http://hypotheticalurl9.png", 
      "http://hypotheticalurl10.png", 
      "http://hypotheticalurl11.png", 
      "http://hypotheticalurl12.png", 
      //...blah blah blah 
      // these are all dynamically created so I won't know what is the last number on the list 
    }; 

Этот массив в конечном итоге будет использоваться для получения изображений с моего сервера с помощью приложения. Он работает до сих пор, но это только с жестко настроенными URL-адресами. Я хотел бы, чтобы URL-адреса были динамическими, так как количество изображений будет меняться изо дня в день.

Я сомневаюсь, что регулярное выражение будет хорошо работать на Java, но опять же я не эксперт. Думал, возможно, написав сценарий на сервере, который генерирует список существующих значений и как-то разбирается в приложении Android.

Может ли кто-нибудь указать мне правильное направление? Заранее спасибо.

Разъяснение:

Массив не должен быть динамически размером в то время как приложение работает.

Мне нужен способ прочитать список существующих изображений в удаленном каталоге и передать эту информацию для автоматического заполнения массива во время выполнения.

Решенный

Ребята, спасибо за помощь. Извините, если я не был достаточно ясен.

Я нашел способ сделать это. В основном это было довольно просто, что было добавление дополнительной строки кода в сценарий оболочки на конец сервера для создания текстового списка существующих URL-адресов изображений одновременно с созданием изображений.

После этого я использовал комбинацию BufferedReader и openStream в приложении для анализа удаленного текстового файла в массив String.

+0

, но вы можете преобразовать этот массив в 'ArrayList' как' ArrayList assetList = Arrayys.asList (myRemoteImages); 'затем использовать' assetList.size() ', чтобы получить размер списка массивов u у вас есть такая проблема с этим путем? –

+0

массив myRemoteImages, поступающий с сервера, в каком формате json или xml api? –

+0

массив объявляется в самом приложении. сервер просто генерирует изображения в этот момент времени. нет никакой передачи информации между ними, поскольку URL-адреса в настоящее время жестко закодированы. –

ответ

1

спасибо за помощь. Извините, если я не был достаточно ясен.

Я нашел способ сделать это. В основном это было довольно просто, что было добавление дополнительной строки кода в сценарий оболочки на конец сервера для создания текстового списка существующих URL-адресов изображений одновременно с созданием изображений.

После этого я использовал комбинацию BufferedReader и openStream в приложении для анализа удаленного текстового файла в массив String.

0

С массива вы можете:

  • изменения элементов массива

, но вы не можете:

  • добавить или удалить элементы. Число элементов, если они фиксированы в массиве. Некоторое обходное решение можно найти, например, поместить нулевые значения и отбросить их при использовании значений в массиве. Но это более хлопотно, чем действительно полезно.

С другой стороны, если вы хотите получить полный динамический массив: используйте список (java.util.List). Здесь интересен ArrayList или даже Vector, так как вам, вероятно, понадобится многократная обработка этого массива. С помощью списка вы можете добавлять и удалять элементы, размер может меняться и элементы могут быть заменены.

+0

И если у вас есть свободное время и вы можете изучить некоторые интересные технологии, попробуйте guava. http://code.google.com/p/guava-libraries/ – Snicolas

+0

oh wait Я думаю, что я был недостаточно ясен. или, возможно, неправильно использовать термины. приложение не должно динамически воссоздавать массив во время его работы. он просто должен иметь правильный массив для каждой среды выполнения. –

+0

Разве вы не получаете URL-адреса для загрузки во время жизненного цикла программы? Вам следует. – Snicolas

0

В этом случае я бы использовал ArrayList. Вам не нужно знать количество элементов, которые вы хотите добавить, и очень просто добавить элементы в конце.

private List<String> list = new ArrayList<String>(); 

Затем просто добавить элементы по

list.add("http://hypotheticalurl1.png"); 

С уважением, Патрик

+0

звучит как метод выбора для большинства ответов здесь.Дело в том, что мне нужен способ ЗНАТЬ список URL-адресов, так как я не буду знать, когда нумерация заканчивается, поскольку она обновляется каждый день. –

0

вместо использования массива строковых использования ArrayList<String> Он будет дает вам больше гибкости добавления и удаления элемента во время выполнения см эта ссылка ... http: //docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html

слышал, вы можете найти пример на ArrayList ... Http: //www.java2s.com/Tutorial/Java/0140_ Коллекции/0160 _ArrayList.htm

надежда, что помогает

0

По вашему сценарию вы необходимо иметь следующее:

1- Веб-сервис, который имеет способ получить список доступных имен изображений.

2- Вам нужен клиент веб-сервиса для вашего приложения для Android, я предлагаю вам использовать KSOAP 2, потому что он широко известен и прост в реализации. (Если вы не можете понять, как использовать ksoap в своей программе, я могу предоставить вам примеры кода)

3 Вам необходимо использовать ArrayList (java.util) для хранения динамического размера массива.

0

Эй ytou может сделать это с помощью
ArrayList stringList = new ArrayList();

stringList.add("Item"); 
Смежные вопросы