title: Using Retrofit in Android
body: <p>I have an android app that has 3 activities :</p>
  
  <ol>
  <li>A login activity</li>
  <li>A tasks acivity where all tasks pertaining to a user are displayed (Populated using an Array Adapter)</li>
  <li>A task_details activity which results from clicking a task on the list</li>
  </ol>
  
  <p>I have to consume REST Apis. The research I have done so far directs me to use Retrofit. I checked how to use it and found out that :</p>
  
  <ol>
  <li>Set the base URL in the Main Activity (Mine is  the Login Activity)</li>
  <li>I need to create a API class and define my functions using annotations.</li>
  <li>Use the class Rest Adapter in the Activity and define Callbacks.</li>
  </ol>
  
  <p>Had my app been a single activity app, I would have crunched everything in my MainActivity.java but I don't know how and where to put all the code from steps 1,2,3 for use in my 3 activities.Could you please help by telling how to use Retrofit in my app. Thanks a lot.</p>
  
  <p>Specifically, I need network calls to :
  1. Login the user
  2. Get all the tasks of the user. 
  And for both I would be using a given REST api.</p>
  
  <pre><code>*********************************************
            Calling Api USing Retrofit
  *********************************************
  **Dependancies** :-
        implementation 'com.android.support:recyclerview-v7:27.1.1'
          implementation 'com.squareup.picasso:picasso:2.5.2'
          implementation 'com.android.support:cardview-v7:27.1.1'
      enter code here
  **Model**
  use the Pozo class
  
  **Api Call**
   -&gt; getLogin()    // use the method
  
  
  
    //API call for Login
      private void getLogin()
      {
          getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
                  WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
          AsyncHttpClient client = new AsyncHttpClient();
          RequestParams requestParams = new RequestParams();
          requestParams.put("email_id", edit_email.getText().toString());
          requestParams.put("password", edit_password.getText().toString());
          Log.e("", "LOGIN URL==&gt;" + Urls.LOGIN + requestParams);
          Log.d("device_token", "Device_ Token" + FirebaseInstanceId.getInstance().getToken());
          client.post(Urls.LOGIN, requestParams, new JsonHttpResponseHandler() {
              @Override
              public void onStart() {
                  super.onStart();
                  ShowProgress();
              }
  
              @Override
              public void onFinish() {
                  super.onFinish();
                  Hideprogress();
  
              }
  
              @Override
              public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                  super.onSuccess(statusCode, headers, response);
                  Log.e("", "Login RESPONSE-" + response);
                  Login login = new Gson().fromJson(String.valueOf(response), Login.class);
                  edit_email.setText("");
                  edit_password.setText("");
                  if (login.getStatus().equals("true")) {
                      getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
                      MDToast mdToast = MDToast.makeText(SignInActivity.this, String.valueOf("User Login Successfully!"),
                              MDToast.LENGTH_SHORT, MDToast.TYPE_SUCCESS);
                      mdToast.show();
                      Utils.WriteSharePrefrence(SignInActivity.this, Util_Main.Constant.EMAIL, login.getData().getEmailId());
                      Utils.WriteSharePrefrence(SignInActivity.this, Constant.USERID, login.getData().getId());
  
                      Utils.WriteSharePrefrence(SignInActivity.this, Constant.USERNAME, login.getData().getFirstName());
                      Utils.WriteSharePrefrence(SignInActivity.this, Constant.PROFILE, login.getData().getProfileImage());
                      hideKeyboard(SignInActivity.this);
                      Intent intent = new Intent(SignInActivity.this, DashboardActivity.class);
                      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                      startActivity(intent);
                      finish();
                  } else {
                      getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
                      MDToast mdToast = MDToast.makeText(SignInActivity.this, String.valueOf("Login Denied"),
                              MDToast.LENGTH_SHORT, MDToast.TYPE_ERROR);
                      mdToast.show();
                  }
              }
  
              @Override
              public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                  super.onFailure(statusCode, headers, responseString, throwable);
                  Log.e("", throwable.getMessage());
                  getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
                  MDToast mdToast = MDToast.makeText(SignInActivity.this, "Something went wrong",
                          MDToast.LENGTH_SHORT, MDToast.TYPE_ERROR);
                  mdToast.show();
              }
          });
      }
  </code></pre>