从onResponse获取变量

时间:2017-04-26 13:42:35

标签: java android

我想从BDDRequest类中获取变量“response”,以便在我的MainActivity类的ListView中使用它,我该怎么做?

public class BDDRequest implements Serializable {
    private final long serialVersionUID = 1L;

    static private Activity activity;
    public String req;
    public BDDRequest(){}


    public static void GetRequest(final Context t, UserEmployeeInfo User) {

        activity = (Activity) t;


        RequestQueue queue = Volley.newRequestQueue(t);
        ParamsSend params = new ParamsSend();

        params.setUser(User);
        ParserJson<ParamsSend> pj = new ParserJson<>(params);


        String strJson;
        try {
            strJson = pj.writeJSON();

        } catch (JsonProcessingException e) {
            strJson = "null";
        }
        final String data = strJson;
        String REST_API_URL = "http://212.227.53.116:8080/WSmartgroom/rest/perso/request";
        Log.d("lol", strJson);
        StringRequest myReq = new StringRequest(Request.Method.PUT,
                REST_API_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.d("reponse:", response);
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("That didn't work!", "Error");
            }
        }) {
            @Override
            public String getBodyContentType() {
                return "application/json";
            }
            @Override
            public byte[] getBody() throws AuthFailureError {
                return data.getBytes();
            }
        };
        queue.add(myReq);
    }
}

2 个答案:

答案 0 :(得分:2)

您正在声明onResponse方法。在它里面,响应是一个参数。你为什么想得到一个你正在投入的参数?问题不明确。

答案 1 :(得分:2)

使用界面,

import android.app.Activity;
import android.content.Context;
import android.util.Log;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import java.io.Serializable;

public class BDDRequest implements Serializable {
    private final long serialVersionUID = 1L;

    static private Activity activity;
    public String req;

    public BDDRequest() {
    }


    public static void GetRequest(final Context t, UserEmployeeInfo User, final Callback callback) {

        activity = (Activity) t;


        RequestQueue queue = Volley.newRequestQueue(t);
        ParamsSend params = new ParamsSend();

        params.setUser(User);
        ParserJson<ParamsSend> pj = new ParserJson<>(params);


        String strJson;
        try {
            strJson = pj.writeJSON();

        } catch (JsonProcessingException e) {
            strJson = "null";
        }
        final String data = strJson;
        String REST_API_URL = "http://212.227.53.116:8080/WSmartgroom/rest/perso/request";
        Log.d("lol", strJson);
        StringRequest myReq = new StringRequest(Request.Method.PUT,
                REST_API_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.d("reponse:", response);
                        callback.onSuccess(response);
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("That didn't work!", "Error");
                callback.onError();
            }
        }) {
            @Override
            public String getBodyContentType() {
                return "application/json";
            }

            @Override
            public byte[] getBody() throws AuthFailureError {
                return data.getBytes();
            }
        };
        queue.add(myReq);
    }


    public interface Callback {
        void onSuccess(String response);
        void onError();
    }

}

并在您的课程上实现界面。

像这样使用,

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.widget.TextView;

import com.example.BDDRequest.Callback;

public class MainActivity extends FragmentActivity implements Callback {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BDDRequest.GetRequest(this, new UserEmployeeInfo(), this);


    }

    @Override
    public void onSuccess(String response) {
        // Bind the data to the listview
    }

    @Override
    public void onError() {
        //Show fallback message here
    }
}