【发布时间】:2016-04-08 17:20:02
【问题描述】:
我是 Java 和 Android 新手。我正在编写的应用程序的一部分从文件中读取项目数据并在使用它填充 ListView 之前填充项目的 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 填充方法与建议的相同。
【问题讨论】: