我最近開始在我的項目中使用Android Volley。 在大多數教程中提到的常見的做法是使用這種方式:Android排球庫:我們總是需要重複Response.Listener和Response.ErrorListener
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET,
url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// do something
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// do something.
}
});
我的查詢是 - 我們不得不重複這個代碼的每一個地方的地方,我們需要做的請求。我試圖把在一個共同的onResponse和onErrorResponse處理程序通過創建一個輔助類:
public class CustomJSONObjectRequest extends JsonObjectRequest {
private BaseResource resource;
private String queryId;
private String paramArgs;
public CustomJSONObjectRequest(int method, String url, JSONObject
jsonRequest,
Response.Listener<JSONObject> listener,
final Response.ErrorListener errorListener,
final Context ctx,
final BaseResource baseResource) {
super(method, url, jsonRequest,
new Response.Listener<JSONObject>() {
// some common code for all BaseResources
},
new Response.ErrorListener() {
// some common code
});
}
但是這種方法的問題是,我需要在每一個東西來傳遞在構造函數本身,這使得我覺得我沒有正確地做。例如,如果我需要傳遞url的一些查詢參數,我需要始終傳遞來自調用者的完整url,儘管我仍然可以在一個地方生成url。
有人可以讓我知道什麼是實現這樣的事情的最佳方式。
感謝您的迴應!另一個蹩腳的查詢 - 我可以在接口方法中使用通用功能嗎?所以我只在需要的時候覆蓋他們。 – pankaj
@pankaj爲可選方法,國際海事組織,你應該閱讀[這個問題](http://stackoverflow.com/questions/5278013/optional-method-in-java-interface) – BNK
我認爲有一個誤解。我的問題是關於保持一個常見的onResponse()例程,所以我不需要在所有活動中提供onResponse()。即使使用接口,我也需要在活動中始終提供自定義響應處理程序。甚至可以朝這個方向思考是否可以? – pankaj