2016-07-23 1 views
2

Eh bien, j'ai un arraylist à partir de mes données sqlite. Et je règle cet arraylist sur mon tableau array de mon spinner.Comment faire pour définir la sélection spinner à partir d'un arrayadapter avec un arraylist

Voilà comment je le fais:

public ArrayList<AttendantModelNames> getAllAttendantNames() { 
     ArrayList<AttendantModelNames> attendantModelArrayList = new ArrayList<>(); 
     hp = new HashMap(); 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor res = db.rawQuery("SELECT * FROM " + TABLE_ATTENDANTS, null); 
     res.moveToFirst(); 
     while (!res.isAfterLast()) { 
      AttendantModelNames l_att = new AttendantModelNames(); 
      l_att.setname(res.getString(res 
        .getColumnIndex(KEY_NAME))); 
      attendantModelArrayList.add(l_att); 
      res.moveToNext(); 
     } 
     Log.d(TAG, attendantModelArrayList.toString()); 
     res.close(); 
     return attendantModelArrayList; 
    } 

Alors mon AttendantModelNames POJO:

public class AttendantModelNames { 
    String name; 

    public String getname() { 
     return name; 
    } 

    public void setname(String name) { 
     this.name = name; 
    } 

    @Override 
    public String toString() { 
     return name; 
    } 
} 

Puis sur mon spinner:

private void setSpinner() { 
     spinner = (Spinner) findViewById(com.duka.R.id.spinner_toolbar); 
     ArrayList<AttendantModelNames> modelArrayList = ah.getAllAttendantNames(); 
     ArrayAdapter<AttendantModelNames> dataAdapter = 
       new ArrayAdapter<AttendantModelNames>(this, android.R.layout.simple_spinner_item, modelArrayList); 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 


     spinner.setAdapter(dataAdapter); 

int selectionPosition= dataAdapter.getPosition(modelArrayList.get(position).getname()); 
spinner.setSelection(selectionPosition); 

I Tried la mise en cela, mais ne semble pas pour travailler, dit:

get (int) dans arraylist ne peut pas être appliquée à (java.lang.String) sur la position

Toutes les suggestions seront appréciées.

+0

Qu'est-ce que ce 'attname'? Et également définir l'adaptateur, puis appeler 'setSelection()' – Sanoop

+0

'attname' est la chaîne que je voudrais définir comme le nom présélectionné. Aussi ne pouvez-vous pas voir que j'ai déjà défini l'adaptateur avant 'setSelection()'? –

+0

Désolé mon mauvais .. Je regardais le code commenté .. – Sanoop

Répondre

0

Voilà comment je résolu mon problème:

J'ai commencé en retournant une liste de type chaîne:

public List<String> getAllAttendantNames() { 
     List<String> list = new ArrayList<String>(); 

     // Select All Query 
     String selectQuery = "SELECT * FROM " + TABLE_ATTENDANTS; 

     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null);//selectQuery,selectedArguments 

     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 
       list.add(cursor.getString(2));//adding 2nd column data 
      } while (cursor.moveToNext()); 
     } 
     // closing connection 
     cursor.close(); 

     // returning lables 
     return list; 
    } 

ensuite mis en place spinner:

private void loadSpinnerData() { 
     List<String> labels = ah.getAllAttendantNames(); 

     // Creating adapter for spinner 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, labels); 

     // Drop down layout style - list view with radio button 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     spinner.setAdapter(dataAdapter); 
     int spinnerPosition = dataAdapter.getPosition(s_attname); 
     Log.d("spinner_set_selection", s_attname + spinnerPosition); 
     spinner.setSelection(spinnerPosition); 
    } 

Et ofcourse onCreate():

spinner = (Spinner) findViewById(R.id.spinner); 
      // Loading spinner data from database 
     loadSpinnerData();