1
Object Book
public class Livros {
private int id;
private String nome;
public Livros() {}
public Livros (int id, String nome) {
this.id = id;
this.nome = nome;
}
public int getId () {
return id;
}
public int setId (int id) {
return id;
}
public int getNome () {
return nome;
}
public int setNome (String nome) {
return nome;
}
Class of openHelper
public List<Livros> buscarLivros() {
SQLiteDatabase sqLiteDatabase = getReadableDatabase();
List<Livros> listLivros = new ArrayList<>();
Cursor cursor = sqLiteDatabase.rawQuery(ConsultasSQL.getRegistrosTabLivros(), null);
if (cursor.moveToFirst()) {
do {
Livros livros = new Livros();
livros.setId(cursor.getInt(0));
livros.setNome(cursor.getString(1));
listLivros.add(livro);
} while (cursor.moveToNext());
}
sqLiteDatabase.close();
return listLivros;
}
Main
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dataBase baseDeDados = new dataBase(this);
SQLiteDatabase connection = baseDeDados.getWritableDatabase();
Spinner spnLivros = (Spinner) findViewById(R.id.spinnerLivros);
ArrayList<Livros> arrayLivros = (ArrayList<Livros>) baseDeDados.buscarLivros();
ArrayAdapter<String> adpLivros = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
adpLivros .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spnLivros.setAdapter(adpLivros);
for (Livros livros : arrayLivros) {
adpLivros.add(livros.toString());
}
}
Spinner select method
public onItemSelected (AdapterView<?> parent, View view, int p, long id) {
Livros livros = (Livros) parent.getSelectedItem();
String buscaIdNome = "ID:" + livros.getId() + "Nome:" + livros.getNome();
Log.i("TESTE:", buscaIdNome);
}
Error:
java.lang.ClassCastException: java.lang.String cannot be cast to com.example.Livro
Before posting this my question I checked numerous sites, including this, but none of them found the solution to this my problem.
ramaral, after making the changes that were raised, now it works with cast. However, after I removed the loop, my spinner presented no further information. As if the data were no longer loaded.
– Victor Vicari
You are passing the array
arrayLivros
to the builder ofArrayAdapter<Livros>
in this way:new ArrayAdapter<Livros>(this, android.R.layout.simple_spinner_item, arrayLivros);
?– ramaral
ramaral, I forgot to pass the arrayLivros at the end. Thank you very much!
– Victor Vicari