I have ListView
and within each item it loads a Spinner
with some information.
The way I want it to work (Expectation): The first time you load Activity
, display the user a list and within each item of it, have a Spinner
with the options for him to choose. Once the user chooses, the request is made to the WebService informing the values.
The form that is working (Reality): The problem is that when Activity
loads, an item of Spinner
is selected and thus requests the WebService. If the user will see more items in the list, he will automatically make requests, because Spinner
items are selected.
MenuAdapter.java
public class MenuAdapter extends BaseAdapter {
public MenuAdapter(List<Atendimento> atendimentos, Activity activity, String posicaoAtualDoUsuario, boolean carregaSpinner) {
this.atendimentos = atendimentos;
this.activity = activity;
this.posicaoAtualDoUsuario = posicaoAtualDoUsuario;
this.carregaSpinner = carregaSpinner;
}
@Override
public int getCount() {
return atendimentos.size();
}
@Override
public Object getItem(int position) {
return atendimentos.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final LayoutInflater inflater = activity.getLayoutInflater();
final View linha = inflater.inflate(R.layout.item_atendimento, null);
final Atendimento atendimentos1 = atendimentos.get(position);
iniciadorComponente(linha);
iniciadorDados(atendimentos1, linha);
if (atendimentos1.getSituacaoOS().equals("Na fila")) {
spnSituacaoItem.setSelection(0);
} else if (atendimentos1.getSituacaoOS().equals("A caminho")) {
spnSituacaoItem.setSelection(1);
} else if (atendimentos1.getSituacaoOS().equals("Em execução")) {
spnSituacaoItem.setSelection(2);
} else if (atendimentos1.getSituacaoOS().equals("Pausado")) {
spnSituacaoItem.setSelection(3);
} else if (atendimentos1.getSituacaoOS().equals("Concluído")) {
spnSituacaoItem.setSelection(4);
} else if (atendimentos1.getSituacaoOS().equals("Abortado")) {
spnSituacaoItem.setSelection(5);
}
// Verificação tempo
if (atendimentos1.getDuracao().equals("")) {
imgTempoItem.setVisibility(View.GONE);
txtTempoItem.setVisibility(View.GONE);
}
// Verificação agendamento
if (atendimentos1.getAgendamento().equals("")) {
imgAgendamentoItem.setVisibility(View.GONE);
txtAgendamentoItem.setVisibility(View.GONE);
}
// Verificação sla restante
if (atendimentos1.getSlaFormatado().equals("")) {
imgSlaItem.setVisibility(View.GONE);
txtSlaItem.setVisibility(View.GONE);
txtSlaRestanteItem.setVisibility(View.GONE);
progressSlaRestante.setVisibility(View.GONE);
}
// Verificação progress bar
if (progressSlaRestante.getProgress() <= 25) {
progressSlaRestante.setProgressDrawable(linha.getResources().getDrawable(R.drawable.progress_bar_state_green));
} else if (progressSlaRestante.getProgress() > 25 && progressSlaRestante.getProgress() <= 50) {
progressSlaRestante.setProgressDrawable(linha.getResources().getDrawable(R.drawable.progress_bar_state_yellow));
} else if (progressSlaRestante.getProgress() > 50 && progressSlaRestante.getProgress() <= 75) {
progressSlaRestante.setProgressDrawable(linha.getResources().getDrawable(R.drawable.progress_bar_state_orange));
} else if (progressSlaRestante.getProgress() > 75) {
progressSlaRestante.setProgressDrawable(linha.getResources().getDrawable(R.drawable.progress_bar_state_red));
}
spnSituacaoItem.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if (carregaSpinner) {
if (position == 0) {
progressDialog = ProgressDialog.show(
linha.getContext(),
linha.getResources().getString(R.string.aguarde),
linha.getResources().getString(R.string.enviandoDados),
false,
true
);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setCancelable(false);
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
handler.post(new Runnable() {
@Override
public void run() {
Autenticacao autenticacao = new Autenticacao(chaveIntegracaoClasse.criarChaveIntegracao(linha.getResources().getString(R.string.cnpjTeste)));
// DadosAtendimento dadosAtendimento = new DadosAtendimento(preferences.getString("nome", null));
DadosOS dadosOS = new DadosOS(atendimentos1.getNumero(), usuario, situacaoAnterior, "A", dataFormatada);
AlteraSituacaoOs alteraSituacaoOs = new AlteraSituacaoOs(autenticacao, dadosOS);
EnvelopeSituacaoOs envelopeSituacaoOs = new EnvelopeSituacaoOs(alteraSituacaoOs);
//chama o retrofit para fazer a requisição no webservice
EnviarSituacaoOsCallback enviarSituacaoOsCallback = new EnviarSituacaoOsCallback(
linha.getContext(),
progressDialog,
urlBase);
enviarSituacaoOsCallback.enviarDadosOs(envelopeSituacaoOs);
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
progressDialog.dismiss();
}
}
}).start();
carregaSpinner = false;
} else if (position == 1) {
progressDialog = ProgressDialog.show(
linha.getContext(),
linha.getResources().getString(R.string.aguarde),
linha.getResources().getString(R.string.enviandoDados),
false,
true
);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setCancelable(false);
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
handler.post(new Runnable() {
@Override
public void run() {
Autenticacao autenticacao = new Autenticacao(chaveIntegracaoClasse.criarChaveIntegracao(linha.getResources().getString(R.string.cnpjTeste)));
// DadosAtendimento dadosAtendimento = new DadosAtendimento(preferences.getString("nome", null));
DadosOS dadosOS = new DadosOS(atendimentos1.getNumero(), usuario, situacaoAnterior, "A", dataFormatada);
AlteraSituacaoOs alteraSituacaoOs = new AlteraSituacaoOs(autenticacao, dadosOS);
EnvelopeSituacaoOs envelopeSituacaoOs = new EnvelopeSituacaoOs(alteraSituacaoOs);
//chama o retrofit para fazer a requisição no webservice
EnviarSituacaoOsCallback enviarSituacaoOsCallback = new EnviarSituacaoOsCallback(
linha.getContext(),
progressDialog,
urlBase);
enviarSituacaoOsCallback.enviarDadosOs(envelopeSituacaoOs);
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
progressDialog.dismiss();
}
}
}).start();
} else if (position == 2) {
progressDialog = ProgressDialog.show(
linha.getContext(),
linha.getResources().getString(R.string.aguarde),
linha.getResources().getString(R.string.enviandoDados),
false,
true
);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setCancelable(false);
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
handler.post(new Runnable() {
@Override
public void run() {
Autenticacao autenticacao = new Autenticacao(chaveIntegracaoClasse.criarChaveIntegracao(linha.getResources().getString(R.string.cnpjTeste)));
// DadosAtendimento dadosAtendimento = new DadosAtendimento(preferences.getString("nome", null));
DadosOS dadosOS = new DadosOS(atendimentos1.getNumero(), usuario, situacaoAnterior, "E", dataFormatada);
AlteraSituacaoOs alteraSituacaoOs = new AlteraSituacaoOs(autenticacao, dadosOS);
EnvelopeSituacaoOs envelopeSituacaoOs = new EnvelopeSituacaoOs(alteraSituacaoOs);
//chama o retrofit para fazer a requisição no webservice
EnviarSituacaoOsCallback enviarSituacaoOsCallback = new EnviarSituacaoOsCallback(
linha.getContext(),
progressDialog,
urlBase);
enviarSituacaoOsCallback.enviarDadosOs(envelopeSituacaoOs);
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
progressDialog.dismiss();
}
}
}).start();
} else if (position == 3) {
progressDialog = ProgressDialog.show(
linha.getContext(),
linha.getResources().getString(R.string.aguarde),
linha.getResources().getString(R.string.enviandoDados),
false,
true
);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setCancelable(false);
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
handler.post(new Runnable() {
@Override
public void run() {
Autenticacao autenticacao = new Autenticacao(chaveIntegracaoClasse.criarChaveIntegracao(linha.getResources().getString(R.string.cnpjTeste)));
// DadosAtendimento dadosAtendimento = new DadosAtendimento(preferences.getString("nome", null));
DadosOS dadosOS = new DadosOS(atendimentos1.getNumero(), usuario, situacaoAnterior, "P", dataFormatada);
AlteraSituacaoOs alteraSituacaoOs = new AlteraSituacaoOs(autenticacao, dadosOS);
EnvelopeSituacaoOs envelopeSituacaoOs = new EnvelopeSituacaoOs(alteraSituacaoOs);
//chama o retrofit para fazer a requisição no webservice
EnviarSituacaoOsCallback enviarSituacaoOsCallback = new EnviarSituacaoOsCallback(
linha.getContext(),
progressDialog,
urlBase);
enviarSituacaoOsCallback.enviarDadosOs(envelopeSituacaoOs);
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
progressDialog.dismiss();
}
}
}).start();
} else if (position == 4) {
progressDialog = ProgressDialog.show(
linha.getContext(),
linha.getResources().getString(R.string.aguarde),
linha.getResources().getString(R.string.enviandoDados),
false,
true
);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setCancelable(false);
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
handler.post(new Runnable() {
@Override
public void run() {
Autenticacao autenticacao = new Autenticacao(chaveIntegracaoClasse.criarChaveIntegracao(linha.getResources().getString(R.string.cnpjTeste)));
// DadosAtendimento dadosAtendimento = new DadosAtendimento(preferences.getString("nome", null));
DadosOS dadosOS = new DadosOS(atendimentos1.getNumero(), usuario, situacaoAnterior, "C", dataFormatada);
AlteraSituacaoOs alteraSituacaoOs = new AlteraSituacaoOs(autenticacao, dadosOS);
EnvelopeSituacaoOs envelopeSituacaoOs = new EnvelopeSituacaoOs(alteraSituacaoOs);
//chama o retrofit para fazer a requisição no webservice
EnviarSituacaoOsCallback enviarSituacaoOsCallback = new EnviarSituacaoOsCallback(
linha.getContext(),
progressDialog,
urlBase);
enviarSituacaoOsCallback.enviarDadosOs(envelopeSituacaoOs);
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
progressDialog.dismiss();
}
}
}).start();
}
} else {
if (spnSituacaoItem.isInEditMode()){
carregaSpinner = true;
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
linha.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent itDetalheAtendimento = new Intent(v.getContext(), DetalheAtendimentoActivity.class);
itDetalheAtendimento.putExtra("atendimento", atendimentos1);
itDetalheAtendimento.putExtra("posicaoAtualUsuario", posicaoAtualDoUsuario);
v.getContext().startActivity(itDetalheAtendimento);
}
});
return linha;
}
private void iniciadorComponente(View linha) {
txtPrioridadeItem = (TextView) linha.findViewById(R.id.txtPrioridadeItem);
txtNomeItem = (TextView) linha.findViewById(R.id.txtNomeItem);
txtSituacaoClienteItem = (TextView) linha.findViewById(R.id.txtSituacaoClienteItem);
txtProtocoloItem = (TextView) linha.findViewById(R.id.txtProtocoloItem);
imgEnderecoItem = (ImageView) linha.findViewById(R.id.imgEnderecoItem);
txtEnderecoItem = (TextView) linha.findViewById(R.id.txtEnderecoItem);
imgTopicoItem = (ImageView) linha.findViewById(R.id.imgTopicoItem);
txtTopicoItem = (TextView) linha.findViewById(R.id.txtTopicoItem);
imgTempoItem = (ImageView) linha.findViewById(R.id.imgTempoItem);
txtTempoItem = (TextView) linha.findViewById(R.id.txtTempoItem);
imgAgendamentoItem = (ImageView) linha.findViewById(R.id.imgAgendamentoItem);
txtAgendamentoItem = (TextView) linha.findViewById(R.id.txtAgendamentoItem);
imgSlaItem = (ImageView) linha.findViewById(R.id.imgSlaItem);
txtSlaItem = (TextView) linha.findViewById(R.id.txtSlaItem);
txtSlaRestanteItem = (TextView) linha.findViewById(R.id.txtSlaRestanteItem);
progressSlaRestante = (ProgressBar) linha.findViewById(R.id.progressSlaRestante);
spnSituacaoItem = (Spinner) linha.findViewById(R.id.spnSituacaoItem);
}
private void iniciadorDados(Atendimento atendimentos1, View linha){
SharedPreferences preferences = linha.getContext().getSharedPreferences("USER_INFORMATION", linha.getContext().MODE_PRIVATE);
long prioridade = atendimentos1.getOrdemPrioridade();
long protocolo = atendimentos1.getProtocolo();
String em = "em ";
String hrs = " hrs";
urlBase = preferences.getString("urlBase", null);
usuario = preferences.getString("usuario", null);
dataFormatada = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(new Date());
txtPrioridadeItem.setText(String.valueOf(prioridade));
txtNomeItem.setText(atendimentos1.getCliente());
txtSituacaoClienteItem.setText(atendimentos1.getSituacaoCliente());
txtProtocoloItem.setText(String.valueOf(protocolo));
txtEnderecoItem.setText(atendimentos1.getEndereco());
txtTopicoItem.setText(atendimentos1.getTopico());
txtTempoItem.setText(em + atendimentos1.getDuracao() + hrs);
txtAgendamentoItem.setText(atendimentos1.getAgendamento());
txtSlaRestanteItem.setText(atendimentos1. getSlaFormatado());
progressSlaRestante.setMax(100);
progressSlaRestante.setProgress(60);
progressSlaRestante.setProgressDrawable(linha.getResources().getDrawable(R.drawable.progress_bar_states));
SpinnerAdapter spinnerAdapter = new SpinnerAdapter(linha.getContext(),icImagem, situacoes);
spnSituacaoItem.setAdapter(spinnerAdapter);
}
}