【发布时间】:2016-05-17 12:20:09
【问题描述】:
我有一个使用 Gson 的凌空请求,但我想用凌空响应填充微调器。但它是异步的。
EstadoRequestHelper.statesRequest(Request.Method.GET, EndpointURL.GET_ESTADO, null, new Response.Listener<Estado[]>() {
@Override
public void onResponse(Estado[] response) {
ArrayList<Estado> estadoArrayList = new ArrayList<>();
Estado estado = new Estado();
estado.setId(0);
estado.setDescricao("Selecione um estado");
estadoArrayList.add(estado);
estadoArrayList.addAll(Arrays.asList(response));
estadoAdapter = new EstadoAdapter(getActivity(), R.layout.simple_spinner_dropdown_item, estadoArrayList);
spn_estado.setAdapter(estadoAdapter);
//If i get the spn_estado selection here,
//it works, but i dont want to get it here...
progressDialogEstado.dismiss();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialogEstado.dismiss();
Toast.makeText(getActivity(), "ERRO ESTADO", Toast.LENGTH_LONG).show();
}
});
如果我将 spn_estado 填充到请求中,它就会出现......但我不想将它填充到请求中......
private void veferyUser() {
usuario = UsuarioSingleton.getInstance().getUsuario();
if (usuario == null) {
et_telefone.setVisibility(View.GONE);
et_celular.setVisibility(View.GONE);
et_logradouro.setVisibility(View.GONE);
et_numero.setVisibility(View.GONE);
et_complemento.setVisibility(View.GONE);
et_bairro.setVisibility(View.GONE);
spn_cidade.setVisibility(View.GONE);
spn_estado.setVisibility(View.GONE);
} else {
et_nome.setText(usuario.getNome() != null ? usuario.getNome() : "");
et_cpf.setText(usuario.getCpf() != null ? usuario.getCpf() : "");
et_email.setText(usuario.getEmail() != null ? usuario.getEmail() : "");
et_telefone.setText(usuario.getTelefone() != null ? usuario.getTelefone() : "");
et_celular.setText(usuario.getCelular() != null ? usuario.getCelular() : "");
progressDialogEstado = Util.ProgressDialog(getActivity(), "Carregando Estados", getString(R.string.prompt_aguarde));
requestEstados();
if (usuario.getEndereco() != null) {
et_logradouro.setText(usuario.getEndereco().getLogradouro() != null ? usuario.getEndereco().getComplemento() : "");
et_numero.setText(String.valueOf(usuario.getEndereco().getNumero()));
et_complemento.setText(usuario.getEndereco().getComplemento() != null ? usuario.getEndereco().getComplemento() : "");
et_bairro.setText(usuario.getEndereco().getBairro() != null ? usuario.getEndereco().getBairro() : "");
if (usuario.getEndereco().getCidade() != null) {
spn_cidade.setSelection(usuario.getEndereco().getCidade().getId(), false);
if (usuario.getEndereco().getCidade().getEstado() != null) {
//I want to populate it here.
spn_estado.setSelection(usuario.getEndereco().getCidade().getEstado().getId(), false);
}
}
}
btn_registrar.setText(R.string.action_edit);
}
}
【问题讨论】:
-
你到底想达到什么目的?为什么异步是一个问题?
-
因为当到达其他方法时,适配器变为空......比我无法获得我的 spn_estado 微调器的位置
标签: android request synchronization android-volley