Android-адаптер для 2 источников данных

1

В моем приложении есть 2 базы данных Android. Для примера предположим, что Database # 1 называется JOBS и имеет следующие столбцы: "Jobs Primary Key" - "Job Title" - "Job Description"

База данных # 2 называется PEOPLE и имеет следующие столбцы: "People Primary Key" - "First Name" - "Last Name" - "Jobs ID Key"

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

В ListView я хотел бы отображать столбцы "Имя" - "Фамилия" - "Название задания" (1 столбец из базы данных № 1, 2 столбца из базы данных № 2). Используя SimpleCursorAdapter, можно ли как-то выполнить это?

Если я не использую SimpleCursorAdapter, единственный способ, которым я могу это решить, - использовать ArrayAdapter, где я использую StringBuilder для объединения трех столбцов вместе и заполнения ListView, но мне интересно если есть лучший способ выполнить это.

Теги:
cursor

2 ответа

0
Лучший ответ

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

Вам просто нужно запросить свою базу данных join информацию из двух таблиц вместе.

Например, что-то (полностью непроверенное) вот так:
String[] columns = { "first_name", "last_name", "title" };
SQLiteDatabase db = mDbOpenHelper.getReadableDatabase();
Cursor c = db.query("person LEFT OUTER JOIN job ON person.job_id = job.id", columns, null, null, null, null, null);

Затем вы можете передать Cursor в Adapter, как обычно.

  • 0
    Большое спасибо, Кристофер, сегодня вечером я попробую. Я дам вам знать, как это получается.
  • 0
    Спасибо, ребята, это удалось, используя LEFT OUTER JOIN. Я прошу прощения за опоздание с принятием ответа, я не получил возможность проверить сразу. Еще раз спасибо!
0

Я не могу комментировать, но вы хотите использовать LEFT OUTER JOIN вместо JOIN (в ответ Кристофера), если вы хотите, чтобы люди без заданий тоже отображались.

  • 0
    Ах, я подумал об этом, потом поленился. Спасибо, я добавил это в свой ответ :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню