2012-10-25 49 views
1

在我的Android應用程序,我hava佈局與Spinners。我想要做的是從第一個微調器中選擇一個項目,填寫第二個項目。從數據庫光標填充時獲取一個微調器的項目選擇

第一微調從(數據庫查詢的結果)光標充滿了這樣的:

Spinner combo1 = (Spinner) findViewById(R.id.combo1); 
mDbH.open(); 
Cursor c1 = null; 
c1 = mDbH.consulta4(); 
startManagingCursor(c1); 
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.simple_spinner_item,c1,new String[] {"nombre"},new int[] {android.R.id.text1}); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
combo1.setAdapter(adapter); 

這工作得很好!這個問題是我的事件監聽器裏:

combo1.setOnItemSelectedListener(new OnItemSelectedListener(){ 
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
     String est = String.valueOf(combo1.getSelectedItem()); 
     int idEst = (int) id; 
     Log.e("est",est); 
     Log.e("idEst",""+idEst); 
     mDbH.open(); 
     Cursor c = null; 
     c = mDbH.consulta5(idEst,est); 
     SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(getApplicationContext(),android.R.layout.simple_spinner_item,c,new String[] {"nombre"},new int[] {android.R.id.text1}); 
     adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     combo1.setAdapter(adapter2); 
    } 

    public void onNothingSelected(AdapterView<?> arg0) {} 

}); 

因爲,在logcat的行Log.e( 「EST」,EST);這表明:

10-25 09:48:50.390: E/est(3462): [email protected] 

和當然,這個值是不是在我的數據庫和第二光標是空的,且旋轉不與任何東西填滿!所以,這是我的問題,當從數據庫填充時,如何從Spinner中選擇項目?我也試過了:

String est = combo1.getSelectedItem().toString(); 

String est = parentView.getItemAtPosition(position).toString(); 

,但結果是一樣的!難道我做錯了什麼?請幫忙!

謝謝!

回答

3

由於您的Spinner是使用SimpleCursorAdaptergetItemAtPosition & getSelectedItem將返回Cursor參考填寫。用途:

Cursor c=(Cursor) combo1.getSelectedItem(); 
String est=c.getString(c.getColumnIndex("nombre"); 

同一作品getItemAtPosition(position)

+0

好吧!謝謝!!這完美的作品! –

+0

順便說一句,我沒有意識到,但我的代碼中有一個錯誤,在行combo1.setAdapter(adapter2);;不是組合1,但組合2 ... –

相關問題