将 Jsoup 中的对象添加到 ArrayList
Adding objects from Jsoup to an ArrayList
我正在尝试将一堆对象(来自 JSoup)添加到数组列表中。出于某种原因,对象不是 added.The 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();
我认为您正在 downloadThread
中添加元素并在 Ui
Thread 中使用 ArrayList
。所以,你的代码中存在同步问题。
如果你只是想超越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();
我正在尝试将一堆对象(来自 JSoup)添加到数组列表中。出于某种原因,对象不是 added.The 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();
我认为您正在 downloadThread
中添加元素并在 Ui
Thread 中使用 ArrayList
。所以,你的代码中存在同步问题。
如果你只是想超越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();