我只是不明白这里发生了什么。
ArrayList<ListItem> list=new ArrayList<ListItem>();
ListItem curItem=new ListItem();
String[] contents=cwFile.list();
for(int i=0;i<contents.length;i++){
curItem.itemName = contents[i];
if(new File(cwd+contents[i]).isDirectory()){
curItem.isDir=true;
}
list.add(i,curItem);
}
Log.i("Main",list.get(0).itemName);
Log.i("Main",contents[0]);
因此,在此代码 fragment 中,我使用 File.list() 方法获取目录的内容
然后,我将名称存储在 ListItem
对象的 ArrayList
中,其中 ListItem
是一个自行创建的类。
但是,ListItem
只是一个存储字符串的类
class ListItem {
protected String itemName ="";
protected boolean isDir=false;
protected Double size=0.0;
}
但是,在记录数组和 ArrayList 的第一个元素(第一个代码 fragment 的最后 2 行)之后,我得到了不同的结果!
这是日志输出:
03-15 20:29:46.427 465-465/com.harshal.filer I/filer: .userReturn
03-15 20:29:46.427 465-465/com.harshal.filer I/filer: Android
第二个输出,“Android”是设备上的实际目录。 但是“.userReturn”是什么以及它来自哪里???
最佳答案
将代码更改为以下内容:
ArrayList<ListItem> list=new ArrayList<ListItem>();
String[] contents=cwFile.list();
for(int i=0;i<contents.length;i++){
ListItem curItem=new ListItem();
curItem.itemName = contents[i];
if(new File(cwd+contents[i]).isDirectory()){
curItem.isDir=true;
}
list.add(i,curItem);
}
Log.i("Main",list.get(0).itemName);
Log.i("Main",contents[0]);
你看我感动了
ListItem curItem=new ListItem();
进入for循环。如果它位于列表中位置 0 的项目的引用之外,则将始终指向数组中的最新条目,因此会出现奇怪的结果。
关于java - Android:ArrayList存储奇怪的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36015261/