2016-07-23 2 views
2

Ну, у меня есть arraylist из моих данных sqlite. И я задаю этот arraylist на моей матрице моего спиннера.Как установить выбор счетчика из массива с помощью arraylist

Вот как я это делаю:

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

Тогда мой 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; 
    } 
} 

Тогда на моей блесны:

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

Я попытался установить это, но не кажется для работы, говорит:

прибудете (INT) в ArrayList не может быть применен к (java.lang.String) на позиции

будут оценены любые предложения.

+0

Что это за 'attname'? А также установите адаптер, а затем вызовите 'setSelection()' – Sanoop

+0

'attname' - это строка, которую я хотел бы задать как предварительно выбранное имя. Также вы не видите, что я уже установил адаптер перед 'setSelection()'? –

+0

Извини, мой плохой .. Я смотрел прокомментированный код .. – Sanoop

ответ

0

Это, как я решить мою проблему:

Я начал возвращающий список строкового типа:

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

Затем установите счетчик:

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

И конечно onCreate():

spinner = (Spinner) findViewById(R.id.spinner); 
      // Loading spinner data from database 
     loadSpinnerData(); 
Смежные вопросы