Получение данных из разных таблиц SQLite в Android? - PullRequest
1 голос
/ 10 июля 2011

Мне было интересно, если у меня есть такая ситуация:

  • В нашей базе данных SQLite есть несколько таблиц (скажем, четыре). каждая таблица состоит из двух столбцов: Title and Content.
  • Мы извлекли заголовки из всех четырех таблиц и отобразили их в одной ListView

Вопрос: как мы можем обработать onItemClickListener, чтобы мы могли извлечь Content выбранного элемента, если элементы из разных таблиц?

Я думаю, что столкнусь с такой проблемой, и я просто хочу знать, можно ли ее решить или нет.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 10 июля 2011

Я бы сказал, что используйте ArrayAdapter и оберните данные в пользовательский класс, содержащий таблицу, из которой они получены (и ID и т.д., если вам это нужно), тогда вы можете получить идентификатор итаблицу, просто зная индекс в списке.

Класс может выглядеть примерно так:

public static class ListItem {
    public String title, table;
    // Maybe include these as well?
    public String content;
    public int id;

    @Override
    public String toString() {
        return title; // Or something else maybe?
    }
}

Затем просто соберите ваши данные из курсоров в ListItem[] и создайте адаптернапример:
new ArrayAdapter<ListItem>(data);

Одна из проблем этого решения заключается в том, что вам нужно загрузить все в память, если имеется много данных, вы можете создать пользовательский Cursor, содержащий все четыре курсора.и используйте вместо него CursorAdapter.

1 голос
/ 10 июля 2011

Решение, предложенное Никласом А., сработает. Но если у вас есть идентичные предметы, почему вы держите их в 4 разных столах? Если ваши предметы идентичны, лучше держать их в таблице указателей и просто добавить дополнительный столбец, чтобы идентифицировать их при необходимости. Если ваши элементы не идентичны, создайте 4 класса моделей для каждого из них и обработайте onItemClicked в каждой модели.

...