2016-07-23 7 views
2

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

私はこれを設定しようとしたが、いないようです仕事には、

のget(int型)ArrayListの中で任意の提案が理解されるであろう 位置

に(java.lang.Stringで)に適用することはできません。

+0

この 'attname'とはなんですか?また、アダプタを設定してから 'setSelection()'を呼び出します。 – Sanoop

+0

'attname'はあらかじめ選択した名前として設定したい文字列です。また 'setSelection()'の前にアダプタを設定していますか? –

+0

申し訳ありませんが私の悪い..私はコメントコードを見ていた.. – Sanoop

答えて

0

これは私が私の問題を解決する方法である:

私は文字列型のリストを返すことによって始まった:

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

そしてofcourseのonCreate()

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

はその後、スピナーを設定

spinner = (Spinner) findViewById(R.id.spinner); 
      // Loading spinner data from database 
     loadSpinnerData(); 
関連する問題