Это скорее вопрос стиля и самообучения, но в коде залпа есть слушатели, и весь код, который я нахожу в сети, включает в себя просто вложение метода переопределения внутри конструктора.Не обязательно то, к чему я привык из C # фона.На самом деле не так уж и хорошо в лямбде, анонимные методы тоже.
Я понятия не имею, с чего начать, потому что сейчас мне это не кажется интуитивно понятным.Но я бы хотел отделить вложенные методы от их собственных соответствующих методов.Или, может быть, даже просто переопределенные методы, если это единственная необходимая часть.
final EditText textView = (EditText) findViewById(R.id.editText);
RequestQueue queue = Volley.newRequestQueue(this);
String url = "http://myURL";
JSONObject postparams = new JSONObject();
postparams.put("city", "london");
postparams.put("name", "bob");
// Request a string response from the provided URL.
JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, url, postparams,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
textView.setText("Success: "+ response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
textView.setText(String.valueOf(error.networkResponse.statusCode));
}
}
);
// Add the request to the RequestQueue.
queue.add(postRequest);
Я хотел бы назвать метод в аргументах 2 Response в пределах одного и того же класса или, возможно, сделать это самому.переопределениеЯвляется ли это возможным?Что-то вроде.
...
JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, url, postparams, myResponseListener(JSONObject response), myErrorResponseListener(VolleyError error));
// Add the request to the RequestQueue.
queue.add(postRequest);
}
public void myResponseListener(JSONObject response){
textView.setText("Success: "+ response.toString());
}
public void myErrorResponseListener(VolleyError error){
textView.setText(String.valueOf(error.networkResponse.statusCode));
}
Есть ли простой способ что-то вроде этого?
Редактировать: Попытка ответа linucksrox, к моему удивлению, следующее на самом деле стоит как отдельный метод ...без public (модификатор доступа) или void (возвращаемый тип) ??
Response.Listener<JSONObject> myListener(JSONObject response)
{
return new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
textView.setText("Success: "+ response.toString());
}
};
}
Но когда я пытаюсь подключить myListener в качестве 4-го аргумента, он жалуется на аргументы.
myListener() no work,
myListener(JSONOBject response) no work
То же самое относится к аргументу раздела ошибки.