Отображение разнородных данных в виде списка из двух таблиц в Android
У меня есть две совершенно не связанные между собой таблицы Notes и Tasks. Мне нужно показать их обоих вместе в виде комбинированного списка. Для достижения этого объединенный курсор, данный адаптеру списка, должен иметь полное соединение двух таблиц. Я не уверен, какой из CursorJoiner/MergeCursor является подходящим способом. Может ли кто-нибудь привести какой-нибудь рабочий пример того, как этого добиться?
(Смена поставщика контента невозможна. Поэтому мне приходится работать с курсорами.)
РЕДАКТИРОВАТЬ: Также мне нужно иметь возможность сортировать элементы в комбинированном виде. Notes имеет столбец темы, а Tasks - столбец заголовка. Я хочу, чтобы комбинированный курсор был отсортирован по алфавиту на основе их обоих.
1 ответ
Поскольку полное внешнее или правое внешнее объединение не поддерживается в sqlite, и если вы хотите узнать о CursorJoiner и CursorMerger, перейдите по этой ссылке ниже
Когда использовать CursorJoiner / MatrixCursor / MergeCursor?
CursorJoiner
Если вам нужны данные из двух или более таблиц, самое простое - использовать SQL-запрос, который объединяет две таблицы. Однако иногда у вас уже есть источники для двух отдельных запросов (например, CursorLoader, основанный на ContentProvider), и вы можете захотеть просто использовать их повторно, не создавая новый запрос. Именно здесь CursorJoiner пригодится.
http://chariotsolutions.com/blog/post/android-advanced-cursors/
MergeCursor
MergeCursor позволяет вам представить два или более курсора как один курсор. Вы можете получить почти такой же эффект, выполнив запрос sql UNION. Однако MergeCursor позволяет вам иметь разные столбцы в разных курсорах и объединять их.