我需要在runnable中调用getItem()方法。但问题是它不起作用。两个日志都在工作,但该方法没有执行。
this.viewItems = new Runnable() {
public void run() {
Log.i("getitem", "before");
getItems();
Log.i("getitem", "done");
}
};
这是getItems方法
private void getItems() {
try {
Log.i("url", url);
InputStream source = retrieveStream(this.url);
Log.i("inside getitem", "before object");
Gson gson = new Gson();
Reader reader = new InputStreamReader(source);
SearchResponse response = gson.fromJson(reader, SearchResponse.class);
Log.i("inside getitem", "after response");
i_orders = new ArrayList<Items>();
List<Offers> off = response.offers;
for (Offers of : off) {
Items item = new Items();
item.setCovers(of.covers);
item.setCuisine(of.cuisine);
item.setDate_available(of.date_available);
item.setDistance(of.distance);
item.setEnd_time_available(of.end_time_available);
item.setLarge_image_url(of.large_image_url);
item.setLat(of.lat);
item.setLon(of.lon);
item.setMax_cover(of.max_cover);
item.setMin_cover(of.min_cover);
item.setOffer_description(of.offer_description);
item.setOffer_id(of.offer_id);
item.setPrice_range(of.price_range);
item.setRestaurant_name(of.restaurant_name);
item.setRestaurant_profile(of.restaurant_profile);
item.setRestaurant_suburb(of.restaurant_suburb);
item.setSmall_image_url(of.small_image_url);
item.setStart_time_available(of.start_time_available);
item.setTables_available(of.tables_available);
item.setTime_available(of.time_available);
i_orders.add(item);
}
Thread.sleep(1000);
Log.i("ARRAY", "" + i_orders.size());
} catch (Exception e) {
Log.e("BACKGROUND_PROC", e.getMessage());
}
runOnUiThread(returnRes);
}
我甚至没有得到顶部的日志消息。
提前致谢!!
答案 0 :(得分:0)
隐含的“这个”。在getItems()之前,但你从“this”调用的地方是另一回事(实际上是Runnable)。
你应该可以做类似的事情:
私有上下文myContext;
...
myContext = this;
this.viewItems = new Runnable ....
myContext.getItems();
...
但不知何故,你必须有一些变量,它是外部作用域中对'this'的引用,可用于从内部作用域引用它。
答案 1 :(得分:0)
我发现由于没有格式化的URL,getItems方法中存在异常。