我只是不明白这里发生了什么。
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]);
所以在这段代码片段中,我使用File.list()方法获取目录的内容
然后,我将名称存储在ArrayList
个ListItem
个对象中,其中ListItem
是一个自创的类。
但是,ListItem
只是一个存储字符串
class ListItem {
protected String itemName ="";
protected boolean isDir=false;
protected Double size=0.0;
}
但是,在记录了数组和ArrayList
的第一个元素(第一个代码片段的最后两行)之后,我得到了不同的结果!
这是日志输出:
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
第二个输出,&#34; Android&#34;是设备上的实际目录。 但是&#34; .userReturn&#34;它来自哪里???
答案 0 :(得分:2)
将您的代码更改为以下内容:
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的项目引用之外,将始终指向数组中的最新条目,因此结果很奇怪。