SQLite Сложный запрос и обработка результатов - PullRequest
0 голосов
/ 10 июня 2011

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

У меня 3 таблицы (на самом деле 5)

posts
categories
posts_categories

для создания отношения "многие ко многим" между сообщениями и категориями

Я создал ListFragment, чтобы показать все мои сообщения с их категориями.

Итак, я создал этот запрос (я не пишу весь код :))

SELECT posts._id, posts.post_title, categories.category_name
FROM posts
LEFT OUTER JOIN posts_categories
ON posts_categories.post_id=posts.post_id
LEFT OUTER JOIN categories
ON posts_categories.category_id=categories.category_id;

Так что, если у меня есть 2 поста с 2 категориями, каждый запрос вернет 4 записи. Я ошибся? Так что в моем курсоре у меня есть 4 записи, но мне действительно нужно собрать данные из курсора и отобразить только то, что мне действительно нужно.

В этом случае я не могу использовать CursorAdapter для отображения моих данных, потому что он вставит 4 элемента в ListFragment.

И я не хочу загружать только сообщения и затем для каждой категории загрузки сообщений, потому что, если у меня есть 100 сообщений, я сделаю 1 запрос, чтобы выбрать все сообщения, и 100 запросов, чтобы выбрать категории.

Что я могу сделать? Мне нужен совет специалиста! Какой лучший способ справиться с этой ситуацией? Вы когда-нибудь сталкивались с этой проблемой?

Большое спасибо. Эмануэле Риччи.

Ответы [ 2 ]

0 голосов
/ 10 июня 2011

Вы пробовали CursorAdapter с фильтруемым.Вот [ссылка] (http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/AutoComplete4.html). Надеюсь, эта помощь.

0 голосов
/ 10 июня 2011

Я предлагаю вам расширить ArrayAdapter и предоставить свой собственный ArrayList со своим собственным объектом для каждого результата в вашем списке.ArrayAdapter предоставляет функцию getView (), которая должна быть переопределена и настроена для раздувания и отображения того, что вам нужно.Это должно быть все, что вам нужно.

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