[RESOLVIDO]Um ArrayAdapter só aceita String?

Pessoal,

Eu dei uma olhada na documentação mas não conseguir sanar a minha dúvida.
Quero popular um Spinner com vários alunos(para criaria um List da classe Aluno).
Como faria pra colocar esses alunos dentro do meu Spinner e depois recuperar o mesmo objeto?

Eu testei com String:

List<String> alunos= new ArrayList<String>(); ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, alunos); arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(arrayAdapter);

Mas gostaria de ter isso:

List<Aluno> alunos= new ArrayList<Aluno>(); ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, alunos); arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(arrayAdapter);

Uma gambiarra seria voce usar o ArrayAdapter e sobreescrever o toString de Aluno para retornar o que voce gostaria de ver na List.

Poderia me dar um exemplo amigo? Lembrando que dentro desse Aluno eu tenho um Nome e um Email(por exemplo). E só quero exibir o nome no Spinner.

O toString() é um método especial do java, usado para representar o objeto em forma de texto.
Alguns componentes visuais chamam o método toString() quando precisam exibir um objeto, por exemplo numa lista.

public class Aluno {

  private String nome;

  /* ...... */

  public String toString() {

    return nome;

  }

}

É exatamente isso pessoal! Obrigado!

Basta colocar dentro da minha classe o toString() e dizer quem eu vou querer retornar:

public String toString() { return (this.getNome()); }

é como Marky disse, é gambiarra.

se não quiser usar o “toString” vc pode escrever o seu adapter que extende ArrayAdapter ou BaseAdapter

caso se interesse neste site http://www.ezzylearning.com/tutorial.aspx?tid=1763429 tem um exemplo interessante

mas na Internet você acha vários exemplos