Как извлечь элементы из массива объектов, относящихся к той же категории? - PullRequest
2 голосов
/ 08 декабря 2011

У меня есть одна таблица в базе данных sqlite, которая содержит пять разных столбцов, как показано ниже.

CATEGORY    NOTE     DATE         PRICE       MODE
travel      delhi    10/5/2011    800          cash
food        daily    9/5/2011     500          cash
travel      goa       12/5/2011    1000         cash

Значения в базе данных добавляются пользователем во время выполнения. В конце концов, я получаю его через контент-провайдера, сохраняю в ArrayList и показываю в виде списка. Но сейчас я хочу показать это в соответствии с категорией, что означает, что я хочу показать категорию ниже, что все ее задачи, затем следующая категория и ее задачи, подобные этой. Элемент - это класс, который содержит все имена столбцов в качестве элементов данных, а также их установщиков и получателей. Любая помощь будет оценена.

Ответы [ 3 ]

2 голосов
/ 08 декабря 2011

Вы можете использовать предложение GROUP BY в столбце категории, чтобы сгруппировать результаты по категории

1 голос
/ 08 декабря 2011

Сначала создайте класс сопоставления -

class CategoryMapper
{
 String categoryName;
 ArrayList<User> usersForThisCategory;
}

Теперь извлеките данные из базы данных и добавьте в соответствующий сопоставитель категорий.

У вас может быть другой ArrayLis, который будет содержать числокатегории и предметы, принадлежащие к категории.

1 голос
/ 08 декабря 2011

Используйте метод Гуавы MultiMaps.index. Он создаст MultiMap, то есть карту с категориями в качестве ключей и списком элементов в качестве значений.

Если вы не можете использовать гуаву, сделайте то, что делает этот метод:

  • создать Map<String, List<Item>>, где ключом является категория
  • переберите список элементов и разместите каждый элемент на карте

Вот пример:

Map<String, List<Item>> itemsByCategory = new LinkedHashMap<String, List<Item>>();
for (Item item : theListOfItems) {
    String category = item.getCategory();
    List<Item> itemsOfCategory = itemsByCategory.get(category);
    if (itemsOfCategory == null) {
        itemsOfCategory = new ArrayList<Item>();
        itemsByCategory.put(category, itemsOfCategory);
    }
    itemsOfCategory.add(item);
}

for (Map.Entry<String, List<Item>> entry : itemsByCategory.entrySet()) {
    System.out.println("Category " + entry.getKey() + ":");
    for (Item item : entry.getValue()) {
        System.out.println("    Item : " + item);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...