package sample.github.nisrulz.usingretrofit2; import android.app.ProgressDialog; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.widget.Toast; import java.util.List; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; import sample.github.nisrulz.usingretrofit2.list.ListAdapter; import sample.github.nisrulz.usingretrofit2.model.People; import sample.github.nisrulz.usingretrofit2.model.PeopleResponse; import sample.github.nisrulz.usingretrofit2.rest.APIError; import sample.github.nisrulz.usingretrofit2.rest.APIServiceInterface; import sample.github.nisrulz.usingretrofit2.rest.NetworkErrorUtils; import sample.github.nisrulz.usingretrofit2.rest.RetrofitHelper; public class MainActivity extends AppCompatActivity { private static final String LOGTAG = MainActivity.class.getSimpleName(); private ProgressDialog progressDialog; private RetrofitHelper retrofitHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressDialog = new ProgressDialog(this); progressDialog.setMessage("Loading.."); progressDialog.setIndeterminate(true); progressDialog.setCanceledOnTouchOutside(false); progressDialog.show(); final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.rv_peoples); recyclerView.setLayoutManager(new LinearLayoutManager(this)); retrofitHelper = new RetrofitHelper(); APIServiceInterface apiService = retrofitHelper.getAPIServiceInterface(); Call<PeopleResponse> call = apiService.getPeople(); call.enqueue(new Callback<PeopleResponse>() { @Override public void onResponse(Call<PeopleResponse> call, Response<PeopleResponse> response) { if (response.isSuccessful()) { List<People> peoples = response.body().getPeoples(); recyclerView.setAdapter(new ListAdapter(peoples, R.layout.list_item_people)); } else { // parse the response body … APIError error = NetworkErrorUtils.parseError(retrofitHelper, response); // … and use it to show error information // … or just log the issue like we’re doing :) Log.d(LOGTAG, "error status : " + response.code() + " | error message : " + error.message() + " | error code : " + error.code()); } progressDialog.dismiss(); } @Override public void onFailure(Call<PeopleResponse> call, Throwable t) { // Log error here since request failed t.printStackTrace(); Toast.makeText(MainActivity.this, t.toString(), Toast.LENGTH_SHORT).show(); progressDialog.dismiss(); } }); } }