這裏是我的類:的ArrayList中的所有元素改變其值意外
public class JsoupParser
{
ArrayList<CompanyInfo> arr = new ArrayList<CompanyInfo>();
public static final String SITE = "http://www.example.com/";
public JsoupParser() {}
public ArrayList<CompanyInfo> parse(final String link)
throws InterruptedException, ExecutionException
{
new RealParser().execute(link).get();
return arr;
}
class RealParser extends AsyncTask<String, Void, Void>
{
@Override
protected Void doInBackground(String... params)
{
Document doc = null;
String link = params[0];
try
{
doc = Jsoup.connect(link).get();
}
catch (IOException e)
{
e.printStackTrace();
}
Elements a = doc.select("a.company_logo");
Elements img = a.select("img");
Iterator aIter = a.iterator();
int i = 0;
CompanyInfo info = new CompanyInfo();
while(aIter.hasNext())
{
aIter.next();
info.setCompanyName(a.get(i).attr("title"));
info.setCompanyListingLink(SITE+ a.get(i).attr("href"));
info.setCompanyLogoLink(SITE+ img.get(i).attr("src"));
arr.add(info);
++i;
}
return null;
}
}
}
我敢肯定,這解析代碼工作正常(在Java項目測試)。
問題是,最後arr
的所有元素變得相同(全部突然變得等於插入到arr
的第一個元素)。我調試並看到,每個元素都不同於另一個元素。
每次info
對象不同,也就是說,我在arr
中添加不同的元素,這樣做arr.add(info);
。在while
循環中調試一切正常,但只要退出AsyncTask
,arr
就會變成一個具有多個相同對象的ArrayList。
我該如何解決這個問題?我究竟做錯了什麼?