Допустим у Вас есть определенная выборка данных из базы данных (SQLite) и Вы хотите отобразить ее в компоненте Spinner. Для этого Вам потребуется создать Cursor с данными, CursorAdapter который будет манипулировать вашими данными, ну и собственно сам компонент Spinner объявленный в xml файле вашего проекта.
Поехали:
Функция которая возвращает выборку данных:
public Cursor GetCursorCities(){
String cmd ="select -1 as _id,'' name from t_city union "+
"SELECT s.id as _id, s.name name FROM t_city s ORDER BY s.name";
return getReadableDatabase().rawQuery(cmd, null);
}
Стоит обратить внимание на то, что в запросе я делаю объединение для того, чтобы пользователь мог выбрать пустое значение в списке. И по умолчанию в компоненте Spinner оно установиться тоже как пустое значение. ВАЖНО: ID_KEY нужно помечать как _id!!! Так как в SQLite это считается первичным ключом.
Далее нам необходимо найти наш компонент определенный в xml файле.
sp_city= (Spinner)findViewById(R.id.sp_city);
Следующим шагом будет создание курсора:
Cursor mCursor = GetCursorCities();
startManagingCursor(mCursor);
startManagingCursor - необходимо вызвать эту функцию для того, чтобы mCursor уничтожился после того как он будет не нужен. (Все попытки самому закрыть курсор приводили к ошибкам).
Подходим к финалу и создаем CursorAdapter:
CursorAdapter mAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item ,mCursor, new String[]{ "name" }, new int[]{android.R.id.text1});
Здесь стоит пояснить:
1. android.R.layout.simple_spinner_item - это типичная разметка для лотка в Spinner'e. Она уже есть в Android системе. Вы можете заменить эту разметку на свою.
2. mCursor - наша выборка данных.
3. new String[]{ "name" } - имя поля, которое мы собираемся отображать (оно есть в запросе).
4. new int[]{android.R.id.text1} - также стандартная разметка в Android'e означающая, что здесь будет находиться текст.
Осталось только присвоить этот CursorAdapter Spinner'у:
city.setAdapter(mAdapter);
Теперь при загрузке Вашего Activity появиться Spinner с данными.
Поехали:
Функция которая возвращает выборку данных:
public Cursor GetCursorCities(){
String cmd ="select -1 as _id,'' name from t_city union "+
"SELECT s.id as _id, s.name name FROM t_city s ORDER BY s.name";
return getReadableDatabase().rawQuery(cmd, null);
}
Стоит обратить внимание на то, что в запросе я делаю объединение для того, чтобы пользователь мог выбрать пустое значение в списке. И по умолчанию в компоненте Spinner оно установиться тоже как пустое значение. ВАЖНО: ID_KEY нужно помечать как _id!!! Так как в SQLite это считается первичным ключом.
Далее нам необходимо найти наш компонент определенный в xml файле.
sp_city= (Spinner)findViewById(R.id.sp_city);
Следующим шагом будет создание курсора:
Cursor mCursor = GetCursorCities();
startManagingCursor(mCursor);
startManagingCursor - необходимо вызвать эту функцию для того, чтобы mCursor уничтожился после того как он будет не нужен. (Все попытки самому закрыть курсор приводили к ошибкам).
Подходим к финалу и создаем CursorAdapter:
CursorAdapter mAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_spinner_item ,mCursor, new String[]{ "name" }, new int[]{android.R.id.text1});
Здесь стоит пояснить:
1. android.R.layout.simple_spinner_item - это типичная разметка для лотка в Spinner'e. Она уже есть в Android системе. Вы можете заменить эту разметку на свою.
2. mCursor - наша выборка данных.
3. new String[]{ "name" } - имя поля, которое мы собираемся отображать (оно есть в запросе).
4. new int[]{android.R.id.text1} - также стандартная разметка в Android'e означающая, что здесь будет находиться текст.
Осталось только присвоить этот CursorAdapter Spinner'у:
city.setAdapter(mAdapter);
Теперь при загрузке Вашего Activity появиться Spinner с данными.
Комментариев нет:
Отправить комментарий