2016-11-23 39 views
0

我用下面的類API成功調用類的方法,以使Android的API調用使用Retrofit呼籲在android系統

public Class Checkin { 

    public static void checkinViaApi(CheckinSendModel checkinSendModel) { 

     final ApiHandler apiHandler = new ApiHandler(); 
     apiHandler.setApiResponseListener(new ApiResponseListener() { 

      @Override 
      public void onApiResponse(ApiResponseModel apiResponse) { 
       Log.i("CheckedIn","true"); 
      } 

      @Override 
      public void onApiException(Error error) { 
       Log.i("fail",error.getErrorMessage()); 

      } 
     }); 

     List<CheckinSendModel> checkinSendModelList = new ArrayList<CheckinSendModel>(); 
     checkinSendModelList.add(checkinSendModel); 
     Call<ApiResponseModel> request = RetrofitRestClient.getInstance().checkinToMainEvent(checkinSendModelList,Constant.API_KEY); 
     apiHandler.getData(request); 
    } 
} 

我調用該方法如下:

Checkin.checkinViaApi(checkinSendModelObject); 

現在,當API調用成功時,我想在我調用的類中執行函數checkedInSuccessfully()。我該怎麼做?

在此先感謝

回答

2

傳入響應界面。

public class Checkin { 

    public static void checkinViaApi(CheckinSendModel checkinSendModel, ApiResponseListener listener) { 

     final ApiHandler apiHandler = new ApiHandler(); 
     apiHandler.setApiResponseListener(listener); 

其他類 - 調用該方法

CheckinSendModel model; 
Checkin.checkinViaApi(model, new ApiResponseListener() { 

     @Override 
     public void onApiResponse(ApiResponseModel apiResponse) { 
      Log.i("CheckedIn","true"); 
      checkedInSuccessfully(); 
     } 

     @Override 
     public void onApiException(Error error) { 
      Log.i("fail",error.getErrorMessage()); 

     } 
); 
1

接口是你得心應手的人。創建一個如下所示的界面。

Interface CheckInListener { 
     void onCheckIn(); 
} 

將checkinViaApi()更改爲以下簽名。

public static void checkinViaApi(CheckinSendModel checkinSendModel, CheckinListener listener) { 
    @Override 
    public void onApiResponse(ApiResponseModel apiResponse) { 
      Log.i("CheckedIn","true"); 
      listener.onCheckIn(); 
     } 
} 

當您調用上述函數時,您可以提供該接口的一個實例。

Checkin.checkinViaApi(checkinSendModelObject, new CheckInListener() { 
     @Override 
     void onCheckIn() { 
       //Do your action here 
     } 
});