Использование rawQuery в новом действии с данными, переданными из предыдущего действия ListView - PullRequest
0 голосов
/ 25 февраля 2012

Мой сценарий:

Я заполняю ListView в действии, которое отображает список названий городов.Когда я выбираю название города, я запускаю новую операцию, которая отображает название города в заголовке TextView.Это работает отлично, используя вызов getIntent в моей новой деятельности.

Затем я хочу заполнить другой ListView в моем новом действии, перечислив все улицы города.

Вот моя проблема.В моей базе данных есть таблица названий городов, которые я называю в своей первой деятельности.Поля в этой таблице, представляющие названия городов, содержат пробелы (например, Сан-Франциско).

Хотя я должен был передать эти данные новому действию, а затем упаковать результаты в новую команду rawQuery для запроса названий улиц, существующих в другой таблице базы данных, которая будет содержать все улицы для определенного города.Проблема в том, что имена таблиц не могут содержать пробелы (поэтому моя таблица называется SanFrancisco).Это нормально, за исключением того, что я не хочу отображать "SanFrancisco" в моем первом действии, я хочу отображать "San Francisco".

Будет ли решение создать другое поле в моей таблице List of Cities, которая будетне космическая версия слова города, и передать это новой деятельности?Если да, то как мне это сделать, учитывая, что я не отображаю это в своем первоначальном ListView?

1 Ответ

1 голос
/ 25 февраля 2012

ADK, Вы не хотите создавать отдельные таблицы для каждого из ваших городов. Все, что вам нужно, это 2 таблицы, и вы можете добавить столько городов и улиц, сколько захотите, и вы даже можете использовать пробелы, если хотите продолжать передавать полное название города.

Вам просто нужно 2 таблицы: "Город" и "Улица".

CREATE TABLE City (_id INTEGER PRIMARY KEY, city_name TEXT);
INSERT INTO City VALUES(1,'San Francisco');
INSERT INTO City VALUES(2,'Los Angeles');
INSERT INTO City VALUES(3,'Munich');

CREATE TABLE Street (_id INTEGER PRIMARY KEY, city_id INTEGER, street_name TEXT);
INSERT INTO Street VALUES(1,1,'Main Street');
INSERT INTO Street VALUES(2,1,'Haight street');
INSERT INTO Street VALUES(3,2,'Sunset Blvd');
INSERT INTO Street VALUES(4,3,'Maximilian Street');

Вот запрос для запуска:

select c._id as id, c.city_name as city_name, s.street_name as street_name
from City c join Street s on c._id=s.city_id
where c.city_name='San Francisco'

Если вы хотите перейти от передачи полного названия города к уникальному идентификатору города, когда кто-то щелкает строку, вам просто нужно изменить последнюю строку в выражении SQL на "где c._id = 1".

Существуют простые способы выполнения запросов с поставщиками контента Android, так что вам следует это также найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...