只显示数组的最后一个元素
Only the last element of the array is displayed
只填充数组的最后一个元素;当一个新元素添加到数组时,旧元素变为空。
public void SelectClick(View view) {
...
materialCardView.setId(secondId);
arrayPath = new String[secondId + 1]; //in class declaration String[] arrayPath = new
String[secondId];
//+ 1 needed in order not to get an error ArrayIndexOutOfBoundsException
showFileChooser(); //calls method leer (внизу)
...
}
public void leer() {
arrayPath[secondId] = FilePath; FilePath = ""; //the path that should fall into the array is supplied
secondId++; //without this, the first element of the array overwrites itself and does not go further
...
}
使用此代码,日志显示第一个元素 I/System.out: [test]
,当添加数组的下一个元素时(按下按钮,SelectClick 方法),它显示 I/System.out: [null, test]
等等on,总是只有最后一个元素不为空。怎么办?
//评论改为英文
数组列表
因为你的数组是不断扩展的,所以不要使用固定大小的数组。使用 ArrayList
.
List<String> arrayPath = new ArrayList<>();
arrayPath.add("test1");
arrayPath.add("test2");
System.out.println(arrayPath);
输出:
[test1, test2]
你的代码出了什么问题?
问题出在这一行:
arrayPath = new String[secondId + 1];
这将创建一个包含所有 null
个元素的新数组,丢弃之前在 arrayPath
数组中的所有内容。
演示:
String[] arrayPath = { "test1" };
int secondId = 1;
arrayPath = new String[secondId + 1];
arrayPath[secondId] = "test2";
secondId++;
System.out.println(Arrays.toString(arrayPath));
[null, test2]
如果您坚持使用数组,您可以使用 Arays.copyOf
方法创建一个新的更长的数组,其中包含所有旧元素:
arrayPath = Arrays.copyOf(arrayPath, secondId + 1);
arrayPath[secondId] = "test2";
secondId++;
通过此更改,输出为:
[test1, test2]
只填充数组的最后一个元素;当一个新元素添加到数组时,旧元素变为空。
public void SelectClick(View view) {
...
materialCardView.setId(secondId);
arrayPath = new String[secondId + 1]; //in class declaration String[] arrayPath = new
String[secondId];
//+ 1 needed in order not to get an error ArrayIndexOutOfBoundsException
showFileChooser(); //calls method leer (внизу)
...
}
public void leer() {
arrayPath[secondId] = FilePath; FilePath = ""; //the path that should fall into the array is supplied
secondId++; //without this, the first element of the array overwrites itself and does not go further
...
}
使用此代码,日志显示第一个元素 I/System.out: [test]
,当添加数组的下一个元素时(按下按钮,SelectClick 方法),它显示 I/System.out: [null, test]
等等on,总是只有最后一个元素不为空。怎么办?
//评论改为英文
数组列表
因为你的数组是不断扩展的,所以不要使用固定大小的数组。使用 ArrayList
.
List<String> arrayPath = new ArrayList<>();
arrayPath.add("test1");
arrayPath.add("test2");
System.out.println(arrayPath);
输出:
[test1, test2]
你的代码出了什么问题?
问题出在这一行:
arrayPath = new String[secondId + 1];
这将创建一个包含所有 null
个元素的新数组,丢弃之前在 arrayPath
数组中的所有内容。
演示:
String[] arrayPath = { "test1" };
int secondId = 1;
arrayPath = new String[secondId + 1];
arrayPath[secondId] = "test2";
secondId++;
System.out.println(Arrays.toString(arrayPath));
[null, test2]
如果您坚持使用数组,您可以使用 Arays.copyOf
方法创建一个新的更长的数组,其中包含所有旧元素:
arrayPath = Arrays.copyOf(arrayPath, secondId + 1);
arrayPath[secondId] = "test2";
secondId++;
通过此更改,输出为:
[test1, test2]