Raf*_*afi 2 java android android-volley
在我的Android应用程序中,当我从后端读取段落时,我想实现成功和错误回调.在iOS中,它看起来像这样:
在我的Passage.h中:
-(void)getPassagesWithSuccessCallback:(void (^)(NSArray<Passage *> *))success errorCallback:(void (^)(NSString *))errorString;
Run Code Online (Sandbox Code Playgroud)
在我的Passage.m中:
-(void)getPassagesWithSuccessCallback:(void (^)(NSArray<Passage *> *))success errorCallback:(void (^)(NSString *))errorString {
MyApiInterface* api = [MyApiInterface sharedInstance];
[api sendGetRequestTo:@"passages" successCallback:[Passage modelListCallback:success] errorCallback:error];
}
Run Code Online (Sandbox Code Playgroud)
在我的Android应用程序中,我正在使用Volley处理我的API请求,但我希望通过使用Passage.java类以及public static void获取段落的方法来进一步封装此API接口.像这样的东西:
public static void getPassagesForFirebaseUser(FirebaseUser user, Context context) {
final String url = URL_BASE + "/passages.json" + "?auth=" + user.getToken(false);
final JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// convert JSON into ArrayList<Passage> object
// pass on this array of Passages in the success completion listener of the method that called this
// just like iOS does success(passages)
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// convert error to string
// pass on this errorString in the error completion listener of the method that called this
// just like iOS does error(errorString)
}
});
Volley.newRequestQueue(context).add(request);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让这种实现流程?
您可以使用界面
public interface ICallbacks {
public void onResponse(JSONObject response);
public void onError(VolleyError error);
}
Run Code Online (Sandbox Code Playgroud)
然后在你的例程代码中添加一个新的Callbacks实例(取决于你工作的ide可以自动生成方法)
public static void getPassagesForFirebaseUser(FirebaseUser user,
Context context, ICallbacks events) {
//here code and call ICallbacks methods
if(result){ events.onResponse(response); }
if(error){ events.onError(err); }
}
Run Code Online (Sandbox Code Playgroud)
最终你可以调用方法:
getPassagesForFirebaseUser(user, context, new ICallbacks(){
@Override
public void onResponse(JSONObject response){
//Success !!!
}
@Override
public void onError(VolleyError response){
//Error !!!
}
});
Run Code Online (Sandbox Code Playgroud)
对不起我的英文,希望对你有所帮助!
| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |