あなたは別の方法にコンストラクタで、ネストされた方法を分離するにはどうすればよいです

ラナルド・フォン:

これは、より多くのスタイルのものであり、そして自習事が、ボレーのコードではリスナーがあり、私はオンラインで見つけるすべてのコードは、単にコンストラクタの内部オーバーライドメソッドを入れ子に伴います。私は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つのレスポンスの引数のメソッドに名前を付けるか、多分これ自体がオーバーライドを行うことです。出来ますか?何かのようなもの。

...
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の答えをしようと、実際にパブリック(アクセス修飾子)または無効(戻り値の型)なし...独自の方法として単独で立って、次の?

    Response.Listener<JSONObject> myListener(JSONObject response)
    {
        return new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                textView.setText("Success: "+ response.toString());
            }
        };
    }

私は4番目の引数としてmyListenerをプラグインしようとする。しかし、それは引数文句を言います。

myListener() no work, 
myListener(JSONOBject response) no work

同じことが、エラーセクション引数にあります。

linucksrox:

あなたはこのような何かを行うことができるはず。

    Response.Listener<JSONObject> myListener = new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            textView.setText("Success: "+ response.toString());
        }
    };

    Response.ErrorListener myErrorListener = new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            textView.setText(String.valueOf(error.networkResponse.statusCode));
        }
    };

    // Request a string response from the provided URL.
    JsonObjectRequest  postRequest = new JsonObjectRequest(Request.Method.POST, url, postparams,
            myListener, myErrorListener);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=334854&siteId=1