Olá bom dia no Android estou utilizando um componente chamado Spinner para que o usuário escolha um tipo de Usuário{Gerente, Dono, Desenvolvedor, Cliente), em um cadastro de usuário. No entanto tá acontecendo dois problemas o primeiro e que sempre o Gerente por ser o primeiro item é cadastrado mesmo que nenhuma seleção seja feita, eu tentei colocar um "Selecione um Item" para ajudar acontece que ele acaba sendo cadastrado também e quando tento alterar gostaria que o tipo atual viesse já selecionado no spinner isso é possível ? Já li muita gente no StackOverflow querendo fazer isso e ninguém consegue. Qual seria uma solução pra que eu não ficasse cadastrando ou alterando sempre pra posiiton 0 ? Eu vi que tem um método onNothingSelected, mas ele não faz nada coloquei um TOAST nele e ele não dá sinal de vida. Desde já agradeço.
Meu layout reduzido
<?xml version="1.0" encoding="utf-8"?>
<Spinner
android:layout_height="match_parent"
android:id="@+id/spnnr_seletor_tipo_usuario"
android:layout_marginTop="10dp"
android:gravity="center"
android:layout_width="match_parent"
android:layout_centerHorizontal="false"
android:spinnerMode="dialog" />
<Button
android:text="Alterar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/bttn_alterar_usuario"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_gravity="bottom"
android:visibility="invisible"
android:textAlignment="center"
android:background="@color/colorPrimaryDark"
android:layout_marginTop="10dp"
android:textSize="18sp" />
<Button
android:text="Cadastrar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/bttn_cadastrar_usuario"
android:layout_gravity="bottom"
android:layout_marginBottom="15dp"
style="@style/Widget.AppCompat.Button.Colored"
android:elevation="1dp"
android:textAlignment="center"
android:visibility="visible"
android:textSize="18sp" />
</LinearLayout>
</ScrollView>
Minha Classe reduzida
public class Formulario_Cadastro_Usuario extends AppCompatActivity{
Spinner spinner;
Usuarios usuario;
private UsuarioHelper helper;
private DBHelper dbhelper;
private String caminhoFoto;
private String tipo_selecionado;
public static final int CODIGO_CAMERA = 12;
public static final int SELECT_PICTURE = 1234;
private FloatingActionButton botao_adicionar_foto;
private Button botao_Alterar_Cadastro;
private Button botao_Cadastrar_Usuario;
private FloatingActionButton botao_flutuante_escolher_galeria;
private FloatingActionButton botao_flutuante_tirar_foto;
private String selecionado;
private int ultima_posicao;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cadastros);
dbhelper = new DBHelper(this);
helper = new UsuarioHelper(this, this);
Intent intent = getIntent();
usuario = (Usuarios) intent.getSerializableExtra("usuario");
botao_flutuante_tirar_foto = (FloatingActionButton) findViewById(R.id.fltng_actn_bttn_tirar_foto);
botao_flutuante_escolher_galeria = (FloatingActionButton) findViewById(R.id.fltng_actn_btton_galeria);
botao_Alterar_Cadastro = (Button) findViewById(R.id.bttn_alterar_usuario);
botao_Cadastrar_Usuario = (Button) findViewById(R.id.bttn_cadastrar_usuario);
spinner = (Spinner) findViewById(R.id.spnnr_seletor_tipo_usuario);
if (usuario != null) {
usuario = helper.preencheFormulario(usuario);
botao_Alterar_Cadastro.setVisibility(View.VISIBLE);
botao_Cadastrar_Usuario.setVisibility(View.INVISIBLE);
botao_Alterar_Cadastro.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
UsuarioDAO dao = new UsuarioDAO(dbhelper);
usuario = helper.pegaUsuario();
usuario.setTipo_de_usuario(selecionado);
dao.altera(usuario);
dbhelper.close();
Toast.makeText(Formulario_Cadastro_Usuario.this, usuario.getTipo_de_usuario() + " " + usuario.getNome() + " Alterado com sucesso", Toast.LENGTH_SHORT).show();
Intent vai_pros_Cadastradados = new Intent(Formulario_Cadastro_Usuario.this, Cadastros.class);
startActivity(vai_pros_Cadastradados);
}
});
}
botao_flutuante_tirar_foto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent vai_pra_camera = new Intent(ACTION_IMAGE_CAPTURE);
caminhoFoto = getExternalFilesDir(null) + "/" + System.currentTimeMillis() + ".jpg";
File arquivo_foto = new File(caminhoFoto);
Uri photoURI = FileProvider.getUriForFile(Formulario_Cadastro_Usuario.this,
BuildConfig.APPLICATION_ID + ".provider",
arquivo_foto);
vai_pra_camera.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(vai_pra_camera, CODIGO_CAMERA);
}
});
botao_flutuante_escolher_galeria.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent vai_para_galeria = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(vai_para_galeria, SELECT_PICTURE);
}
});
final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.xml_tipos_usuarios, android.R.layout.simple_spinner_item);
spinner.setPrompt("Escolha um tipo");
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
ultima_posicao = position;
long id_da_posicao = id;
switch (position) {
case 0:
selecionado = parent.getItemAtPosition(1).toString();
ultima_posicao=0;
break;
default:
selecionado = parent.getItemAtPosition(position).toString();
ultima_posicao=position;
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
if(selecionado==usuario.getTipo_de_usuario()){
Toast.makeText(Formulario_Cadastro_Usuario.this,"Nenhum selecionado",Toast.LENGTH_LONG).show();
}
}
});
botao_Cadastrar_Usuario.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
UsuarioDAO dao = new UsuarioDAO(dbhelper);
UsuarioHelper helper = new UsuarioHelper(Formulario_Cadastro_Usuario.this, Formulario_Cadastro_Usuario.this);
Usuarios usuario = helper.pegaUsuario();
usuario.setTipo_de_usuario(selecionado);
dao.insere(usuario);
Toast.makeText(Formulario_Cadastro_Usuario.this, usuario.getTipo_de_usuario() + " " + usuario.getNome() + " cadastrado com sucesso", Toast.LENGTH_LONG).show();
Intent vaipraUsuariosCadastrados = new Intent(Formulario_Cadastro_Usuario.this, Cadastros.class);
startActivity(vaipraUsuariosCadastrados);
}
});
}
}