Erro ao preencher dados salvos de um Spinner

Bom dia a todos.
O meu código salva os dados do Spinner e até então tudo certo,

Esta assim
contato.setCama(spnCama.getSelectedItem().toString());

Mas o código que preenche o Spinner com os dados salvos da erro, Caused by: java.lang.NumberFormatException:

Esta assim
spnMedida.setSelection(Integer.parseInt(contato.getMedida()));

Fiz assim e salvou sem erro
spnCama.setSelection(contato.getCama().indexOf(toString()));

Mas ao acessar o layout com os dados que foram salvos
o Spinner aponta sempre ao primeiro item.

Desde já agradeço quem me disser oque fiz de errado…

Voçê quer deixar o spinner pre-selecionado?
Se sim esse código pode te ajudar:

 > private void definirVeiculo(long codVeiculo){
> 		 Veiculo veiculo = veiculoRepository.buscaPorId(codVeiculo);
> 		 if(veiculo != null){
> 		 for(int i= 0;i<spVeiculos.getCount();i++){
> 			 if(spVeiculos.getItemAtPosition(i).toString().equals(veiculo.getPlaca())){
> 				 spVeiculos.setSelection(i);
> 			 }
> 		 }
> 		 }
> 	 }
> </code>

No caso ele faz uma comparação de strings no if, se for igual ele seta o spinner na posição da comparação.
Espero que ajude.

Essa é a minha intenção deixar o Spinner pre selecionado
e o seu código realmente me ajudou. Muito obrigado.
Pensei em algo mais simples, talvez por isso não consegui resolver.

Por favor me ajude a entender algo.

Essa parte do código salva o item do Spinner e os demais da activity…

private void salvar() {

    try {
        contato.setNome(edtNome.getText().toString());
        contato.setQuantidade(edtQuantidade.getText().toString());

        contato.setCama(spnCama.getSelectedItem().toString());
        contato.setMedida(String.valueOf(spnMedida.getSelectedItemPosition()));
       contato.setTecido(String.valueOf(spnTecido.getSelectedItemPosition()));

        if(contato.getId() == 0)
           repositorioContato.inserir(contato);
        else
           repositorioContato.alterar(contato);

    } catch (Exception ex) {
        MessageBox.show(this, "Erro", "Erro ao salvar dados: " + ex.getMessage());
    }
}

Porém o spnCama eu alterei para salvar a string e não a posição,
pois precisaria de setar e apresentar esta string em um textView de outra activity.

Já este código preenche a acticity com os dados salvos,
e eu alterei o Spinner spnCama com o código que você me apresentou.

private void preencheDados() {

    edtNome.setText(contato.getNome());
    edtQuantidade.setText(contato.getQuantidade());

    for(int i= 0;i<spnCama.getCount();i++){
        if(spnCama.getItemAtPosition(i).toString().equals(contato.getCama())){
            spnCama.setSelection(i);
        }
    
    spnMedida.setSelection(Integer.parseInt(contato.getMedida()));
    spnTecido.setSelection(Integer.parseInt(contato.getTecido()));        
 }
}

Porque assim dava erro NumberFormatException?
spnCama.setSelection(Integer.parseInt(contato.getCama()));

Tem jeito de setar esta string sem usar for e if ?

Complicado tratar esses dados…

A questão é que primeiramente se você tivesse lido o que o setSelection faz, já tinha matado a charada rs, ele serve para você settar a posição que você queira que apareça pré selecionado.
Exemplo:
Vamos supor que tenhamos esse array ou lista abaixo:
{“amarelo”,“verde”,“azul”}
Eu quero que apareça pré selecionado o azul no spinner:
spinner.setSelection(2);

Então se você tiver outra forma de saber a posição do item que você quer que seja settado não precisa do if.

Agora o erro se da porque o getCama() não retorna um inteiro.