我是Java和Android的新手。我正在編寫的應用程序的一部分從文件讀取項目數據,並在使用它填充ListView之前填充項目的ArrayList。創建對象的ArrayList會導致每個元素相同
從main.java:-
public class MainActivity extends AppCompatActivity {
public static ArrayList<Item> items;
.
.
.
private void ReadItemsFile() throws IOException {
File itemsFile = new File(itemsFilenameString);
items = new ArrayList<Item>();
try (BufferedReader itemsBufferedReader = new BufferedReader(new FileReader(itemsFile))) {
for (String line; (line = itemsBufferedReader.readLine()) != null;) {
String[] lineStrings = line.split("\t|\n", 2);
int itemNo = Integer.parseInt(lineStrings[0]);
items.add(new Item(itemNo, lineStrings[1]));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
從Items.java:-
public class Item {
private static int idInt;
private static String description;
private static Image image;
public Item(int idInt, String description) {
this.idInt = idInt;
this.description = description;
this.image = image;
}
}
但是當我運行此我發現的ArrayList(和ListView)是所有項目的所有與從文件中讀取的最後一個相同。我試着調試這一點,並發現ArrayList中的所有項目都更改爲最後一個行後增加: -
items.add(new Item(itemNo, lineStrings[1]));
請有人可以解釋爲什麼這是和如何解決它?
我以前在這個網站上檢查過Creating an ArrayList of Objects,發現我的ArrayList人口方法和建議的一樣。
這無關他們的存儲。他們在'Item'類中顯然具有'static'變量而不是實例變量。 – Savior
謝謝你。我確實考慮過這條路線,但現在我意識到這是不必要的。 – JimFitz