2012-03-10 56 views
0

是否有一種簡單的方法從微調器獲取用戶的選擇(字符串值)?我試圖避免在它上面設置一個監聽器並編寫一個onItemSelected()方法,因爲當用戶做出選擇時我不需要發生任何事情。相反,我試圖設置一個按鈕單擊來捕獲選擇並將其發送到一個捆綁到另一個活動。我的微調器被一個光標填滿。這裏是我的代碼,它崩潰就行了:從數據庫填充的微調器中獲取用戶(字符串值)選擇的簡單方法?

String choice = this.adapter.getItem(index).toString(); 

代碼:

public class MainActivity extends BaseActivity 
{ 
static final String TAG = "MainActivity"; 
static final String[] FROM = {CreateDB.C_CATEGORY}; 
static final int[] TO = {android.R.id.text1}; 
CreateDB dbBuilder; 
SQLiteDatabase database; 
Cursor cursor; 
SimpleCursorAdapter adapter; 
Spinner spinnerLocal; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    dbBuilder = new CreateDB(this); 
    database = dbBuilder.getReadableDatabase();   
    cursor = database.query(CreateDB.TABLE, null, null, null, null, null, CreateDB.C_CATEGORY + " DESC"); 
    startManagingCursor(cursor); 

    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cursor, FROM, TO); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    Spinner spinnerRemote = (Spinner) findViewById(R.id.spinner2); 

    spinnerRemote.setAdapter(adapter); 
} 

public void createReview(View view) 
{ 
      //createReview runs when a button is clicked 
    Spinner spinner = (Spinner)findViewById(R.id.spinner2); 

      int index = spinner.getSelectedItemPosition(); 

    String choice = this.adapter.getItem(index).toString(); 

    Intent postReview = new Intent(this,Post.class); 
    Bundle bundle = new Bundle(); 
    bundle.putString("CATEGORY", choice); 
    postReview.putExtras(bundle); 
    startActivity(postReview); 
} 

回答

1

有沒有一種簡單的方法來從一個微調得到了用戶的選擇(字符串值)?

您沒有「字符串值」。

您使用了SimpleCursorAdapter。因此,您的「價值」是Cursor

您可以在Spinner,這(爲CursorAdapter -backed Spinner)調用getSelectedItem()應該返回位於選定行上Cursor。從那裏,通過getString()和親屬讀出你想要的任何值。

+0

謝謝 - 這是非常有幫助的。 – cmac 2012-03-11 01:00:08