Android-адаптер для 2 источников данных - PullRequest
1 голос
/ 04 августа 2010

В моем приложении 2 базы данных Android.Для примера, скажем, база данных № 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 для объединения3 столбца вместе, и заполните ListView, но мне интересно, есть ли лучший способ сделать это.

Ответы [ 2 ]

0 голосов
/ 05 августа 2010

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

0 голосов
/ 04 августа 2010

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

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

Например, что-то (полностью непроверенное), например:
String[] columns = { "first_name", "last_name", "title" };<br> SQLiteDatabase db = <a href="http://en.wikipedia.org/wiki/Join_%28SQL%29" rel="nofollow noreferrer">mDbOpenHelper</a>.getReadableDatabase();<br> Cursor c = db.<a href="http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query%28java.lang.String,%20java.lang.String[],%20java.lang.String,%20java.lang.String[],%20java.lang.String,%20java.lang.String,%20java.lang.String%29" rel="nofollow noreferrer">query</a>("person LEFT OUTER JOIN job ON person.job_id = job.id", columns, null, null, null, null, null);

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

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