6

spinner.getSelectedItem()。toString()呼び出しから返されたテキスト「android.database.sqlite.SQLiteCursor@435b9ba0」を取得しています。理由はわかりません。スピナーはSimpleCursorAdapterに関連付けられています。

これがコードです

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

およびxmltrack_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" />

スピナーxmlは次のようになります

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

返されるカーソルは

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

スピナーは正しく機能しているようです。保存しようとすると、spinner.getSelectedItem()。toString()を使用して、選択したアイテムの値として渡されます。

誰もがここで明らかに間違っているものを見ます。何をすべきかわからない。

ありがとうパトリック

4

2 に答える 2

7

あなたのコードはあなたが書いたように機能しています。SpinnerですAdapterView。接続したアダプタはですSimpleCursorAdapter。これは、選択されたアイテムがCursor(ユーザーの選択に対応するカーソルの結果セット内のアイテムに配置されている)ことを意味します。Cursorのデフォルト実装がありtoString()、のようなものを返しますandroid.database.sqlite.SQLiteCursor@435b9ba0

何をしようとしているのか教えてくれなかったので、それ以上正確にアドバイスすることはできません。ただし、保存したいものが何であれ、Cursorから取得したものから引き出す必要がありますgetSelectedItem()

于 2010-01-16T01:47:30.313 に答える
2

私はあなたの文脈を読むのに悩むことができますが、簡単に助けたかっただけです。にちなんで名付けられた列があり、特定の行で値をDbHelper.KEY_COL取得しています。DbHelper.KEY_COLおそらく私のコードのいくつかが役立つでしょう:

Cursor colCur=(Cursor)spCols.getSelectedItem();
String col=colCur.getString(colCur.getColumnIndex(DbHelper.KEY_COL));
于 2012-09-30T09:20:01.977 に答える