I have the following problem I am trying to bring a list of objects that I get from a json
, from an activity through a controller. Within the code that I am attaching, what I am looking for is to pass the list of specialties to my MainActivity through a method.
MainActivity
public class MainActivity extends AppCompatActivity implements MainActivityView {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Controlador ctr = new Controlador(this);
ctr.getAll();
}
@Override
public void mostrarEspecialidades(ArrayList<Especialidad> especialidades) {
ArrayList<Especialidad> esp = especialidades;
}
@Override
public void errorCargarEspecialidades(String error) {
}
}
Controller
public class Controlador {
ArrayList<Especialidad> lista ;
private MainActivityView mView;
public Controlador(MainActivityView view) {
mView = view;
}
public void getAll(){
Api c = new Api(mView);
c.cargarEspecialidades();
}
public void setDatos(ArrayList<Especialidad> datos){
lista = datos;
}
}
Api
public class Api implements Callback<ArrayList<Especialidad>> {
public static final String base_url = "http://192.168.1.55:8080/";
private MainActivityView mView;
public Api(MainActivityView view){
mView = view;
}
public void cargarEspecialidades() {
Gson gson = new GsonBuilder().setLenient().create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(base_url)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
EspecialidadService servicio = retrofit.create(EspecialidadService.class);
Call<ArrayList<Especialidad>> call = servicio.getEspecialidad();
call.enqueue(this);
}
@Override
public void onResponse(Response<ArrayList<Especialidad>> response, Retrofit retrofit) {
if(response.isSuccess()){
Controlador c = new Controlador(null);
ArrayList<Especialidad> a = response.body();
c.setDatos(a);
mView.mostrarEspecialidades(a);
}else {
mView.errorCargarEspecialidades(String.valueOf(response.errorBody()));
System.out.println(response.errorBody());}
}
@Override
public void onFailure(Throwable t) {
}
}
MainActivityView
public interface MainActivityView {
void mostrarEspecialidades(ArrayList<Especialidad> especialidades);
void errorCargarEspecialidades(String error);
}