Сохранение выбранного элемента счетчика в таблице базы данных - Android - PullRequest
0 голосов
/ 15 марта 2011

Так что моя ситуация такова. У меня есть две таблицы. Основная таблица, где данные добавляются с помощью формы, эта форма имеет счетчик, который питается от второй таблицы (эта часть работает правильно). Затем я хочу, чтобы выбранный элемент в счетчике был сохранен в поле постороннего ключа в главной таблице.

Я использовал следующий код:

private Spinner mSpinner;

mSpinner = (Spinner) findViewById(R.id.spinCat);

и в моем методе заполнения полей у меня есть следующее:

  mSpinner.getSelectedItem();

но в базе данных хранится что-то вроде "android.database.sqlite.SQLiteCursor@43e5be60", а не имя.

Если кто-то может предложить какую-то помощь, это было бы здорово, это беспокоило меня уже несколько дней и несколько остановило развитие. Если вам нужно увидеть больше кода, пожалуйста, не стесняйтесь спрашивать.

Любая помощь очень ценится.

РЕДАКТИРОВАТЬ: новый код:

            mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View vw,
                    int pos, long id) {
                LinearLayout rowll = (LinearLayout) vw;
                TextView test = (TextView) rowll.getChildAt(0);
                Toast t = Toast.makeText(parent.getContext(), test
                        .getText().toString(), Toast.LENGTH_SHORT);
                t.show();

            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // Do nothing..
            }
        });

Ответы [ 2 ]

1 голос
/ 15 марта 2011

getSelectedItem возвращает Object (именно так выглядит ваш вывод).

Вы пытались просто вызвать toString, как это?

mSpinner.getSelectedItem().toString();

Лично я простоустановите переменную в слушателе onItemSelected, но это тоже должно работать.Я использую:

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            myIP = parent.getItemAtPosition(position).toString();
        }

Затем переменная постоянно обновляется, и я просто добавляю ее в БД при подключении к рассматриваемому IP.

Извлечение данных курсора:

    while (cursor.moveToNext()) {
        ipList.add(cursor.getString(1));
    }

getString(int columnIndex) делает: Возвращает значение запрошенного столбца в виде строки.

http://developer.android.com/reference/android/database/Cursor.html

0 голосов
/ 16 марта 2011

Не используйте .getChildAt (), используйте .getItemAtPositon (). Посмотрите, как код делает это на http://developer.android.com/resources/tutorials/views/hello-spinner.html.

...