2010-01-16 29 views
5

Tôi nhận được văn bản '[email protected]' được trả về từ cuộc gọi spinner.getSelectedItem(). ToString(). Tôi cung không chăc tại sao. Spinner được gắn với SimpleCursorAdapter.[email protected]

Đây là mã

cCategories = (Cursor) myAdapter.getAllCategories(); 
    this.startManagingCursor(cCategories); 

    SimpleCursorAdapter scaCategories = new SimpleCursorAdapter(this, R.layout.track_category_item,cCategories,new String[] {DBAdapter.KEY_CATEGORIES_NAME},new int[]{R.id.text1}); 
    scaCategories.setDropDownViewResource(R.layout.track_category_dropdown_item); 
    mCatSpinner = (Spinner) findViewById(R.id.thecategory); 
    mCatSpinner.setAdapter(scaCategories); 

    if(mCatSpinner.isSelected() != true) { 
     mCatSpinner.setSelection(0); 
    } 

và xml track_category_item.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/text1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@android:id/text1" 
    style="?android:attr/spinnerItemStyle" 
    android:ellipsize="marquee" 
    android:singleLine="true"> 
</TextView> 

track_category_dropdown_item.xml

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"   
    android:id="@+id/text1" 
    style="?android:attr/spinnerDropDownItemStyle" 
    android:singleLine="true" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:ellipsize="marquee" /> 

Các xml spinner trông như thế này

<Spinner 
    android:id="@+id/thecategory" 
    android:prompt="@string/SELECT_CATEGORY" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_x="15px" 
    android:layout_y="133px" > 
</Spinner> 

và con trỏ được trả lại là

public Cursor getAllCategories() 
{ 
    return db.query(DATABASE_CATEGORIES_TABLE, new String[] { 
      KEY_CATEGORIES_ROWID, 
      KEY_CATEGORIES_NAME, 
      KEY_CATEGORIES_DEFAULT}, 
      null, 
      null, 
      null, 
      null, 
      null); 
} 

Các spinner xuất hiện để làm việc đúng cách. Khi tôi cố gắng để lưu này là những gì được thông qua như là giá trị của các mục được chọn bằng cách sử dụng spinner.getSelectedItem(). ToString().

Bất kỳ ai nhìn thấy bất cứ điều gì sai trái ở đây. Không chắc sẽ làm gì.

nhờ patrick

+0

Điều này đã hoạt động chính xác với ArrayAdapter. Giá trị được thông qua sau đó là văn bản của danh mục (hoặc là Kinh doanh hoặc Cá nhân). Thực tế là tôi đang sử dụng một thay đổi SimpleCursorAdapter cách giá trị được chuyển? – bugzy

Trả lời

6

Mã của bạn đang làm việc như bạn đã viết nó. SpinnerAdapterView. Bộ đổi nguồn bạn kết nối với nó là SimpleCursorAdapter. Điều này có nghĩa là mục đã chọn là Cursor (được đặt ở mục trong tập hợp kết quả của Cursor tương ứng với lựa chọn của người dùng). Cursor có cài đặt mặc định là toString(), trả về một cái gì đó như [email protected].

Vì bạn không cho chúng tôi biết bạn đang cố gắng làm gì, bạn không thể tư vấn chính xác hơn nữa. Dù bạn muốn tiết kiệm gì, tuy nhiên, bạn cần phải rút ra khỏi số Cursor mà bạn nhận được từ getSelectedItem().

+0

Cảm ơn commonsware, tôi nghĩ rằng bạn có thể đã trả lời câu hỏi của tôi. Tôi chỉ đơn giản là cố gắng lấy giá trị của mục đã chọn và lưu nó vào một bảng cơ sở dữ liệu. Ban đầu tôi đã sử dụng một ArrayAdapter để điền vào spinner. Mảng này là mảng phần tử đơn lẻ với một vài danh mục ("Doanh nghiệp", "Cá nhân"). Điều này làm việc như một chuỗi đã được thông qua. Vì vậy, câu nói của bạn, tôi sẽ cần phải làm một số mã bổ sung để xác định vị trí danh mục thực tế từ con trỏ dựa trên spinner.getSelectedItemPosition() đã truyền qua? cảm ơn patrick – bugzy

+0

Có. Với 'query()', bạn cần gọi 'getString (1)' trên 'Con trỏ', để lấy lại cột thứ 2 ... giả sử' KEY_CATEGORIES_NAME' là giá trị bạn tìm kiếm. – CommonsWare

1

tôi có thể bị làm phiền khi đọc ngữ cảnh của bạn, nhưng chỉ muốn trợ giúp ngắn gọn. tôi có một cột có tên sau DbHelper.KEY_COL và tôi đang lấy giá trị DbHelper.KEY_COL ở một hàng cụ thể. có thể một số mã của tôi sẽ giúp:

Cursor colCur=(Cursor)spCols.getSelectedItem(); 
String col=colCur.getString(colCur.getColumnIndex(DbHelper.KEY_COL)); 
Các vấn đề liên quan