我的第一个列表1和列表显示了正确的值,但第二个列表1没有显示任何值:
public class IcsList {
ArrayList<String> list1= new ArrayList<String>();
public ArrayList<String> list(ArrayList list){
this.list1= list;
Log.i("list1", "" + list1);
Log.i("list", "" + list);
setList();
return list;
}
public ArrayList setList(){
Log.i("list1", "" + list1);
return list1;
}
这是我的日志:
04-27 21:45:10.094 31548-31597/com.parse.starter I/list﹕ [B Soccer @ Liberty, Apr 28 2015 5:30 PM, KGHS Athletics, G Soccer v Liberty (home), Apr 28 2015 5:30 PM, KGHS Athletics
04-27 21:45:10.133 31548-31597/com.parse.starter I/list1﹕ [B Soccer @ Liberty, Apr 28 2015 5:30 PM, KGHS Athletics, G Soccer v Liberty (home), Apr 28 2015 5:30 PM, KGHS Athletics
04-27 21:45:10.133 31548-31548/com.parse.starter I/list1﹕ []
顺便说一下,我正试图在另一个类中使用这个arraylist,方法是将字符串值添加到该类中的数组列表中。setlist()是否可以将其设为空?我应该说“return this.list1”吗。顺便说一下,另一个类中有一个arraylist,我正在调用list.(arraylist)。将在另一个类中调用getter来检索此arraylist。这门课就像是两者之间的接力。
在第一节课中,我在icslist中设置了arraylist:
ArrayList<String> arrayList = new ArrayList();
//add to arrayList
IcsList list = new IcsList();
list.list(arrayList);
从icslist检索的类:
ArrayList<String> arrayList = new ArrayList();
IcsList list = new IcsList();
arrayList= list.setList();
3条答案
按热度按时间e0bqpujr1#
泰勒:根据你自己最后的回答-你有一些误解:
类icslist具有静态列表1。这意味着所有示例共享同一个list1 arraylist。因此,无论何时何地使用您的类,它总是同一个list1对象。
更奇怪的是,在icslist的构造函数中初始化这个list1。这意味着在创建至少一个icslist示例之前,list1为空。这是不切实际和混乱的。更糟糕的是,每一个新的icslist()都会用新的、空的arraylist更新这个list1。这也很奇怪。
上一段代码显示您创建了list2,然后立即重写它list1引用。这也没有道理。
我想你想要的是:
第二个是对的(假设蜂蜜是“蜂蜜”),第三个是对的
ny6fqffe2#
对于任何陷入困境的人,我的盖特·塞特:
我在icslist类中添加到arraylist的位置:
在其中检索要在另一个类中使用的arraylist:
我把它描述成一个“中继系统”
6uxekuva3#
你没有提供完整的代码。看起来像是在示例化对象列表之后从另一个地方调用setlist()。
我之所以看到它是因为如果您按原样运行代码(假设将其余部分添加为至少编译),那么logcat的所有3行都是相同的。然而,他们都是不同的,甚至第一和第二。
我的建议是在每个输出中添加特定的细节。至少方法名或堆栈跟踪,您将看到区别-谁在调用和何时调用-并且不会有混淆。