выбранный элемент счетчика

Я читал материал об этом в течение нескольких часов и до сих пор не понял, как это сделать.

Мне удалось заполнить счетчик из курсора, читающего базу данных, и теперь я пытаюсь получить выбранный элемент на счетчике, чтобы помочь заполнить список.

Вот мой код:

Cursor cursorpf = DatabaseHelper.getPFunc();
    startManagingCursor(cursorpf);

    Spinner spinnerpf = (Spinner) findViewById(R.id.spinner1);

    String[] frompf = new String[] { "Designacao" };
    int[] topf = new int[] { android.R.id.text1 };

    SimpleCursorAdapter scaPFunc = new SimpleCursorAdapter(this,
            android.R.layout.simple_spinner_item, cursorpf, frompf, topf);
    scaPFunc
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinnerpf.setAdapter(scaPFunc);
    spinnerpf.setOnItemSelectedListener(new MyOnItemSelectedListener());
    final String stringpf = MyOnItemSelectedListener.getSelected();
            long id = spinnerpf.getSelectedItemId();
    String stringpf = String.valueOf(id);
    DatabaseHelper.setPF(stringpf);

Класс MyOnItemSelectedListener:

public class MyOnItemSelectedListener implements OnItemSelectedListener {

private static String selected = "";

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {        

    selected = String.valueOf(id);
Toast.makeText(parent.getContext(), "Escolha: " + selected, Toast.LENGTH_LONG).show();


}

@SuppressWarnings("unchecked")
public void onNothingSelected(AdapterView parent) {
    // Do nothing.
}

}

Тост этого класса возвращает позицию курсора. Теперь я знаю, что должен сравнить его с базой данных, чтобы получить желаемое значение, но я просто не могу этого сделать. Не могли бы вы мне помочь?

Заранее спасибо.

Редактировать: Ребята, не могли бы вы мне помочь? Мне удалось получить выбранный элемент, внедрив приведенный выше код, но бывает, что список заполняется только при запуске приложения. Когда я выбираю что-то на счетчике, ничего не происходит. :|


person Kookie_Monster    schedule 05.05.2011    source источник
comment
Если никто не посмотрел на это до того, как я вернусь домой, я помогу тебе.   -  person Codemonkey    schedule 05.05.2011


Ответы (1)


Если вы хотите получить выбранный элемент из базы данных, просто передайте четвертый аргумент onItemSelected (id) в ваш SQL-запрос. Это идентификатор строки записи, он же _ID.

person ernazm    schedule 05.05.2011
comment
Я уже передаю его в запрос. Проблема в том, что я передаю значение, а не позицию курсора. Как я могу это сделать? - person Kookie_Monster; 05.05.2011
comment
Извини, что я тебя не понял. onItemSelected имеет позицию курсора (3-й аргумент) и идентификатор строки (4-й). Что еще тебе нужно? - person ernazm; 05.05.2011
comment
Кажется, я понимаю, что я должен делать. Но теперь по какой-то причине мне удается вызвать метод get из класса MyOnItemSelectedListener, но строка ничего не получает. Думаю, на сегодня я отдохну... - person Kookie_Monster; 05.05.2011
comment
Хорошо, ребята... несколько дней назад мне удалось получить желаемое значение, заменив код на selected = String.valueOf(id);. Теперь проблема в том, что я пытаюсь вернуть значение другому классу, но не могу заставить его работать, так как это... final String stringpf = MyOnItemSelectedListener.getSelected(); ... кажется, ничего не делает. Что я делаю неправильно? :/ - person Kookie_Monster; 17.05.2011
comment
Я не понимаю вашего подхода. Использование геттеров в слушателях, вероятно, неправильно. - person ernazm; 17.05.2011
comment
Хорошо, неважно, я понял: long id = spinnerpf.getSelectedItemId(); Строка stringpf = String.valueOf(id); - person Kookie_Monster; 17.05.2011