Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 创建用于改装的自定义回调_Android_Rest_Callback_Retrofit - Fatal编程技术网

Android 创建用于改装的自定义回调

Android 创建用于改装的自定义回调,android,rest,callback,retrofit,Android,Rest,Callback,Retrofit,我在我的应用程序中使用改装和Otto进行web服务调用。我想为每个请求分配一个id,所以我做了一个像这样的自定义改装回调 public class RetrofitCallback<T> implements Callback<T> { private static int _idCounter = 1; public int requestId; private Bus eventBus; public RetrofitCallba

我在我的应用程序中使用改装和Otto进行web服务调用。我想为每个请求分配一个id,所以我做了一个像这样的自定义改装回调

public class RetrofitCallback<T> implements Callback<T> {

    private static int _idCounter = 1;

    public int requestId;
    private Bus eventBus;

    public RetrofitCallback(Bus eventBus){
        this.requestId = _idCounter;
        this.eventBus = eventBus;
        _idCounter++;
    }

    @Override
    public void success(T data, Response response) {
        // problem.. data is not the type I expected. please see below
        RetrofitRequestSuccess<T> message = new RetrofitRequestSuccess<>(requestId, 
           data, response);
        eventBus.post(message);
    }

    @Override
    public void failure(RetrofitError error) {
        RetrofitRequestFailed message = new RetrofitRequestFailed(requestId, error);
        eventBus.post(message);
    }
}
public类回调实现回调{
专用静态int_idCounter=1;
公共int请求id;
私家巴士;
公共事件回调(总线事件总线){
this.requestId=\u idCounter;
this.eventBus=eventBus;
_idCounter++;
}
@凌驾
公共无效成功(T数据、响应){
//问题..数据不是我期望的类型。请参阅下面的
ReformationRequestSuccess消息=新的ReformationRequestSuccess(requestId,
数据、响应);
eventBus.post(消息);
}
@凌驾
公共无效失败(错误){
RefughtRequestFailed消息=新建RefughtRequestFailed(请求ID,错误);
eventBus.post(消息);
}
}
成功班

public class RetrofitRequestSuccess<T> {
    public T data;
    public int requestId;
    public Response response;

    public RetrofitRequestSuccess(int requestId, T data, Response response) {
        this.requestId = requestId;
        this.data = data;
        this.response = response;
    }
}
public类请求成功{
公共数据;
公共int请求id;
公众反应;
公共请求成功(int请求ID、T数据、响应){
this.requestId=requestId;
这个数据=数据;
这个。反应=反应;
}
}
然后我使用回调函数,如下所示

int requestId = 0; // activity level scope

RestAdapter restApiAdapter = new RestAdapter.Builder().setEndpoint(ENDPOINT).build();
RestAPI restClient = restApiAdapter.create(RestAPI.class);
RetrofitCallback<List<Order>> callback = new RetrofitCallback<>(BusProvider.getBus());
restClient.getOrders(callback);
requestId = callback.requestId;
int requestId=0;//活动级别范围
RestAdapter restApiAdapter=new RestAdapter.Builder().setEndpoint(ENDPOINT.build();
RestAPI restClient=restApiAdapter.create(RestAPI.class);
RefughtCallback=新的RefughtCallback(BusProvider.getBus());
restClient.getOrders(回调);
requestId=callback.requestId;
奥托法

@Subscribe
public void onHttpResponseReceived(RetrofitRequestSuccess message) {
    if(message.requestId == requestId) {
        List<Order> ordersList = (ArrayList<Order>) message.data;
    }
}
@订阅
收到HttpResponseReceived上的公共无效(请求成功消息){
if(message.requestId==requestId){
List ordersList=(ArrayList)message.data;
}
}
问题是我从未在
message.data
中获得
顺序
对象的列表。无论我在创建回调时传递什么类型,message.data始终包含Gson的
LinkedTreeMap
对象列表。如何使其返回正确的类型?任何帮助都将不胜感激