我试图将一堆对象(从JSoup)添加到数组列表中。由于某种原因,没有添加对象。JSoup查询是正确的,因为我在将它们添加到for循环中时打印了结果。任何帮助,将不胜感激。
public List<MainGridItem> fruitItem = new ArrayList<>();
Thread downloadThread = new Thread(new Runnable() {
@Override
public void run() {
Document doc = null;
try {
doc = Jsoup
.connect("http://banana-mango.com/hello.htm")
.get();
Elements fruits = doc.select("p[align=center]");
for (int i = 0; i < fruits.size(); i++) {
MainGridItem gr = new MainGridItem(fruits.get(i).select("img").attr("abs:src"),fruits.get(i).text().trim(),fruits.get(i).select("a").attr("abs:href"));
//System.out.println(gr.getStuff+gr.getMore+gr.getAgain);
fruitItem.add(gr);
}
} catch (IOException e) {
e.printStackTrace();
}
}
});
downloadThread.start();
我认为您是在Thread中添加元素downloadThread
并使用ArrayList
in Ui
。因此,您的代码中存在同步问题。
如果您只想通过com进行通讯,则可以执行点赞(仅限伪代码)
public List<MainGridItem> fruitItem = new ArrayList<>();
Handler handler = new Handler();
Thread downloadThread = new Thread(new Runnable() {
@Override
public void run() {
Document doc = null;
try {
doc = Jsoup
.connect("http://banana-mango.com/hello.htm")
.get();
Elements fruits = doc.select("p[align=center]");
for (int i = 0; i < fruits.size(); i++) {
MainGridItem gr = new MainGridItem(fruitItem.get(i).select("img").attr("abs:src"),fruitItem.get(i).text().trim(),fruitItem.get(i).select("a").attr("abs:href"));
//System.out.println(gr.getStuff+gr.getMore+gr.getAgain);
fruitItem.add(gr);
}
handler.post(new Runnable() {
@Override
public void run() {
// Access your arrayList Here and do Ui stuff
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
});
downloadThread.start();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句