android.database.sqlite.SQLiteCursor@435b9ba0 - PullRequest
       12

android.database.sqlite.SQLiteCursor@435b9ba0

5 голосов
/ 16 января 2010

Я получаю текст 'android.database.sqlite.SQLiteCursor@435b9ba0', полученный из вызова spinner.getSelectedItem (). ToString () Я не уверен почему. Спиннер привязан к адаптеру 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);
    }

и 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" />

Спиннер 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 ().

Кто-нибудь видит здесь что-то явно не так. не уверен что делать.

спасибо патрик

Ответы [ 2 ]

6 голосов
/ 16 января 2010

Ваш код работает так, как вы его написали. Spinner является AdapterView. Адаптер, к которому вы его подключили, - SimpleCursorAdapter. Это означает, что выбранный элемент является Cursor (позиционируется на элементе в наборе результатов курсора, соответствующем выбору пользователя). Cursor имеет реализацию по умолчанию toString(), которая возвращает что-то вроде android.database.sqlite.SQLiteCursor@435b9ba0.

Поскольку вы не сказали нам, что пытаетесь сделать, невозможно дать вам точный совет. Однако все, что вы хотите сохранить, нужно извлечь из Cursor, полученного от getSelectedItem().

1 голос
/ 30 сентября 2012

Я могу быть обеспокоен чтением вашего контекста, но просто хотел кратко помочь. у меня есть столбец с именем DbHelper.KEY_COL, и я получаю значение DbHelper.KEY_COL в определенной строке. возможно, часть моего кода поможет:

Cursor colCur=(Cursor)spCols.getSelectedItem();
String col=colCur.getString(colCur.getColumnIndex(DbHelper.KEY_COL));
...