I am working on a app
which uses a Api
to query a web server through retrofit
. In my project I use the pattern MVC
, and what I'm looking for is to enter a ProgressBar
or a ProgressDialog
q show up when I wait for the answer of my response
while doing the validation of existence of a user. I would like to know how I could introduce any of the Progress
to my project.
AddUser
public class AgregarUsuario extends AppCompatActivity {
public EditText nombre;
LinearLayout agregar;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_agregar_usuario);
nombre = (EditText) findViewById(R.id.nombreUsuario);
agregar = (LinearLayout) findViewById(R.id.btnAgregarUsuario);
context = AgregarUsuario.this;
agregar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
ControladorUsuario controlador = new ControladorUsuario(context);
if (nombre.getText().toString().length() > 0) {
String nom = nombre.getText().toString();
Usuario u = new Usuario();
u.setNombre(nom);
boolean existe = controlador.validarUsuario(u);
if (existe == false) {
controlador.crearUsuario(u);
finish();
}
}
}
});
}
}
UserController
public class ControladorUsuario {
private Context context;
public ArrayList<String> listaEspecialidades;
public ArrayList<Especialidad> EspecialidadesList;
public ControladorUsuario(Context c) {
this.context = c;
}
public boolean validarUsuario(Usuario usuario) {
Controlador_Api_Usuario c = new Controlador_Api_Usuario();
String nombre = usuario.getNombre();
List<Usuario> e = c.getUsuario(nombre);
if (e.size() == 0) {
return false;
} else {
return true;
}
}
public void crearUsuario(Usuario usuario) {
Controlador_Api_Usuario c = new Controlador_Api_Usuario();
c.crearUsuario(usuario);
}
}
Driver_Api_User
public class Controlador_Api_Usuario {
public static final String base_url = "http://misiatio.com/api/";
public Retrofit retrofit;
public Controlador_Api_Usuario() {
}
public void conectar() {
retrofit = new Retrofit.Builder()
.baseUrl(base_url)
.addConverterFactory(GsonConverterFactory.create(new GsonBuilder().create()))
.build();
}
public List<Usuario> getUsuario(String nombre) {
conectar();
List<Usuario> usuario = null;
UsuarioService eService = retrofit.create(UsuarioService.class);
Call<List<Usuario>> call = eService.validarUsuario(nombre);
try {
Response<List<Usuario>> response = call.execute();
if (response.isSuccessful()) {
usuario = response.body();
}
} catch (IOException e) {
e.getMessage();
}
return usuario;
}
public void crearUsuario(final Usuario usuario) {
conectar();
UsuarioService service = retrofit.create(UsuarioService.class);
Call<Usuario> call = service.agregarUsuario(usuario);
call.enqueue(new Callback<Usuario>() {
@Override
public void onResponse(Call<Usuario> call, retrofit2.Response<Usuario> response) {
}
@Override
public void onFailure(Call<Usuario> call, Throwable t) {
}
});
}
}
UserService
public interface UsuarioService {
@GET("usuario/getAll")
Call<ArrayList<Usuario>> getUsuarios();
@GET("usuario/validar/{nombre}")
Call<List<Usuario>> validarUsuario(@Path("nombre") String nombre);
@POST("usuario/agregar")
Call<Usuario>agregarUsuario(@Body Usuario usuario);
}