2016-07-23 29 views
2

Nun, ich habe eine Arraylist aus meinen SQL-Daten. Und ich setze diese Arraylist auf meinen Arrayadapter meines Spinner.Wie spinner Auswahl von einem Array-Adapter mit einem Arraylist

Hier ist, wie ich es tun:

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; 
    } 

Dann POJO meine AttendantModelNames:

public class AttendantModelNames { 
    String name; 

    public String getname() { 
     return name; 
    } 

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

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

Dann auf meinem 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); 

Ich habe versucht, diese Einstellung aber scheint nicht zu arbeiten, sagt:

get (int) in Arraylist kann nicht auf (java.lang.String) auf Position

geschätzt wird Irgendwelche Vorschläge angewendet werden. Diese

+0

Was ist das 'attname'? Und setze auch adapter und rufe dann 'setSelection()' – Sanoop

+0

'attname' ist die Zeichenfolge, die ich als den vorgewählten Namen festlegen möchte. Kann ich auch nicht sehen, dass ich den Adapter bereits vor 'setSelection()' gesetzt habe? –

+0

Sorry mein schlechter .. Ich schaute auf den kommentierten Code .. – Sanoop

Antwort

0

ist, wie ich mein Problem behoben:

Ich begann durch eine Liste vom Typ string Rückkehr:

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; 
    } 

Dann Spinner ein:

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); 
    } 

Und natürlich onCreate():

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