2010-04-20 8 views
5

J'ai cherché une quête pour cela pendant un certain temps aujourd'hui. Tout a l'air si facile mais je n'arrive jamais à le faire fonctionner. Je veux remplir un spinner avec mon curseur. J'ai essayé d'utiliser SimpleCursorAdapter pour cela, car beaucoup de sites disent que je le ferai mais je ne le ferai jamais fonctionner. Montre-moi à quel point c'est facile :)Remplir spinner du curseur dans android

Merci pour votre temps!

Mon curseur

Cursor cursor = db.query(DATABASE_TABLE_Clients, new String[] {"_id", "C_Name"}, null, null, null, null, "C_Name"); 

Mon spinner

(Spinner) findViewById(R.id.spnClients); 

Mon code

Cursor cursor_Names = SQLData.getClientNames(); 
startManagingCursor(cursor_Names); 

String[] columns = new String[] { "C_Name" }; 
int[] to = new int[] { R.id.txt_Address }; 

SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_dropdown_item, cursor_Names, columns, to); 
Spinner spnClients = (Spinner) findViewById(R.id.spnClients); 
spnClients.setAdapter(mAdapter); 
+0

Pouvez-vous nous montrer le code complet, en particulier votre utilisation de SimpleCursorAdapter? –

+0

Ajout du code. Comment utiliser les colonnes et à quelque chose que je ne comprends pas. J'ai testé avec beaucoup de valeurs différentes mais il ne fait qu'un spinner vide avec des boutons radio dedans. – Rickard

Répondre

7

Le code suivant a résolu mon problème. Il me manquait .setDropDownViewResource. Après cela, j'ai utilisé simple_spinner_dropdown_item donc je n'ai pas à faire ma propre mise en page.

Cursor cursor_Names = SQLData.getClientNames(); 
    startManagingCursor(cursor_Names); 

    String[] columns = new String[] { "C_Name" }; 
    int[] to = new int[] { android.R.id.text1 }; 

    SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cursor_Names, columns, to); 
    mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    Spinner spnClients = (Spinner) findViewById(R.id.spnClients); 
    spnClients.setAdapter(mAdapter); 
5

Je ne vois pas une vue pour votre menu déroulant dans votre code. Quelque chose comme:

mAdapter.setDropDownViewResource(R.layout.spinner_view_dropdown); 

Bien sûr, vous devez disposer d'un fichier spinner_view_dropdown.xml dans votre résolution répertoire/mise en page.

0

Je l'ai fait

empresasSpinner = (Spinner) findViewById(R.id.empresasSpinner); 

    ArrayAdapter spinnerArrayAdapter = new ArrayAdapter(this, 
        android.R.layout.simple_spinner_item, empresasAll.toArray(new EntidadObject[0]));     
      empresasSpinner.setAdapter(spinnerArrayAdapter); 

Un simple DTO

public class EntidadObject { 
    private int id; 
    private String nombre; 
//GETTES and SETTERS 
}   

La partie OAC

public class EntidadDao { 
      //... 

     public List<EntidadObject> getEmpresas() { 
       Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM empresas", null); 
       List<EntidadObject> entidadObjects = new ArrayList<EntidadObject>(); 
       cursor.moveToFirst(); 
       do { 
        EntidadObject entidadObject = new EntidadObject(); 
        entidadObject.setId(cursor.getInt(0)); 
        entidadObject.setNombre(cursor.getString(1)); 

        entidadObjects.add(entidadObject); 
       } while (cursor.moveToNext()); 
       return entidadObjects; 
      } 
    } 

Alors je peux attraper l'ID de l'élément sélectionné avec

EntidadObject eo = (EntidadObject)empresasSpinner.getSelectedItem(); 
       eo.getId();