JsonRequester Library Access Listener from Inside Function



我正在使用JsonRequester库,它使用凌空从URL获取JSON数据。

我的问题是,如何从 getJson 函数内部从 onResponse 侦听器返回 JSONObject?

这是我的 JsonHelpers 类:

import android.content.Context;
import android.support.annotation.Nullable;
import com.alirezaafkar.json.requester.interfaces.Methods;
import com.alirezaafkar.json.requester.interfaces.Response;
import com.alirezaafkar.json.requester.requesters.JsonObjectRequester;
import com.alirezaafkar.json.requester.requesters.RequestBuilder;
import com.android.volley.VolleyError;
import org.json.JSONObject;
public class JSONHelper {
    public static int USER_REQUEST = 0;
    public JSONObject getJson(Context context, String url){
        JsonObjectRequester mUserRequester;


        JsonObjectListener objectListener = new JsonObjectListener();
        mUserRequester = new RequestBuilder(context)
                .requestCode(USER_REQUEST)
                .showError(true)
                .buildObjectRequester(objectListener);
        mUserRequester.request(Methods.GET, url);

    }
    private class JsonObjectListener extends Response.SimpleObjectResponse {
        @Override
        public void onResponse(int requestCode, @Nullable JSONObject jsonObject) {
        }
        @Override
        public void onErrorResponse(int requestCode, VolleyError volleyError, @Nullable JSONObject errorObject) {
            //Error (Not server or network error)
        }
        @Override
        public void onFinishResponse(int requestCode, VolleyError volleyError, String message) {
            //Network or Server error
        }
        @Override
        public void onRequestStart(int requestCode) {
            //Show loading or disable button
        }
        @Override
        public void onRequestFinish(int requestCode) {
            //Hide loading or enable button
        }
    }
}

回调

public interface Callback {
    public void onResponse(JsonObject jsonObject);
}

您需要JsonObject时的课程

getJson(this, url, new Callback(){
    public void onResponse(JsonObject jsonObject){
         // Do what you want here
}
});

获取杰森

public void getJson(Context context, String url, Callback callBack){
        JsonObjectRequester mUserRequester;
        JsonObjectListener objectListener = new JsonObjectListener();
        mUserRequester = new RequestBuilder(context)
                .requestCode(USER_REQUEST)
                .showError(true)
                .buildObjectRequester(objectListener);
        mUserRequester.request(Methods.GET, url);
    }

JsonObjectListener

private class JsonObjectListener extends Response.SimpleObjectResponse {
    private Callback callback;
    public JsonObjectListener(Callback callBack){
         this.callBack = callBack;
    }
    @Override
    public void onResponse(int requestCode, @Nullable JSONObject jsonObject){
        callback.onResponse(jsonObject);
    }
 }

它应该有效,告诉这是否解决了你的问题。

最新更新