嘗試搜索此問題,但無法找到它(可能是由於我對Java/Retrofit的經驗不足)。Retrofit(Android) - 獲取回調對象返回
我得到ImgurAPI類的一個實例,並調用ImgurAPI::getImage()
:
ImgurAPI imgurAPI = ImgurAPI.getInstance();
Image image = ImgurAPI.getImage(someIDHere);
我提出請求,以獲取圖像,並獲得迴應:
public Image getImage(final String id) {
Image requestedImage = null;
imgurService.getImage(id, new Callback<Image>() {
@Override
public void success(Image image, Response response) {
//I need to get requestedImage = image to return
}
@Override
public void failure(RetrofitError error) {
System.out.println("Failed: " + error.toString());
}
});
return requestedImage;
}
我遇到的問題是確定將success()
返回的圖像返回到名爲ImgurAPI::getImage()
的活動的正確方法。
本來我在ImgurAPI Image image
有一個全局變量,我將它分配給檢索到的圖像,然後我會返回:return ImgurAPI.image;
。它的工作,但它感覺不正確。
有沒有人有建議要做到這一點?還是我以錯誤的方式去做這件事?
隨溶液編輯
我能夠做更多的得到一對夫婦的答案後搜索,發現這對解決我的問題:
ImgurAPI imgurAPI = ImgurAPI.getInstance();
imgurAPI.getImage("OhERyMa", new Callback<Image>() {
@Override
public void success(Image image, Response response) {
// Simple test to check for functionality
Context context = getApplicationContext();
String link = image.getData().getLink();
LinearLayout ll = (LinearLayout)findViewById(R.id.imageScrollerLayout);
ImageView iv = new ImageView(context);
Picasso.with(context).load(link).into(iv);
ll.addView(iv);
}
@Override
public void failure(RetrofitError error) {
System.out.println(error.toString());
}
});
而且ImgurAPI::getImage()
現在包含:
public void getImage(final String id, Callback<Image> callback) {
imgurService.getImage(id, callback);
}
在閱讀您的建議後,我可以使用更有針對性的關鍵字進行更多搜索(謝謝)。我在這裏找到一個例子:[鏈接](https://github.com/square/retrofit/issues/235) 我將用新代碼更新我的問題,並考慮這個答案。謝謝! – DemonCode