2013-04-28 5 views
0

Это связано с Array of objects in a class. Я изначально добавил его к этому вопросу, но поскольку на этот вопрос был дан ответ, я не получал ответов.ArrayList возвращает неправильное значение

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

Я попытался создать объект заново в каждом цикле, но он все еще вызывает проблемы. Я не вижу, что я делаю неправильно здесь.

public class xmldata { 
    String Barcode; 
    String First; 
    String Last; 
    String Phone; 
    String Email; 

    String md5sum; 

    String zipfile; 

    List<PictureData> pics = new ArrayList<PictureData>(); 

...

public class PictureData { 

    static String filename; 
    static String directory; 

...

xmldata data = new xmldata(); 

ResultSet pictures=db.query("select * from pictures where barcode=?",barcode); 



while (pictures.next()) { 
    PictureData pictemp= new PictureData(); 
    pictemp.setdirectory(pictures.getString("path")); 
    pictemp.setfilename(pictures.getString("filename")); 
    data.pics.add(pictemp);  
} 

...

for (int j=0; j<data.pics.size();++j) { 

    String path; 
    PictureData pictemp2= new PictureData(); 

    pictemp2=(PictureData) data.pics.get(j); 
    path=pictemp2.getdirectory()+pictemp2.getfilename(); 

    System.out.println(path); 

    zip.addfile(path); 

} 
+0

Вы нарушили свое время, чтобы посмотреть содержимое в data.pics? –

+0

На самом деле это не говорит мне, что там. Он просто перечисляет pics> elementData> [0] PictureData (id = 43) и pics> elementData> [1] PictureData (id = 45) – Codeguy007

+0

Где ваша PictureData? – StarPinkER

ответ

5

Проблема здесь:

public class PictureData { 

    static String filename; 
    static String directory; 

} 

Почему вы создали статическое имя файла и каталог? он может содержать только одно значение. Сделайте их не статичными, и они будут работать.

+3

+1, вы следовали за другим сообщением :) –

+0

Так что, хотя у меня было несколько экземпляров класса, оно могло содержать только одно значение, потому что оно было статичным и, таким образом, одинаковым для всех экземпляров? – Codeguy007

+1

@ Codeguy007: Yup, static находится на уровне уровня не уровня экземпляра. – Lokesh

Смежные вопросы