private int getCategories(List<MessageThread> messageThreads) { final long week = (long) 7 * 24 * 60 * 60 * 1000; final long month = (long) 30 * 24 * 60 * 60 * 1000; int itemCount = 0; Category category = new Category(); for (int i = 0; i < messageThreads.size(); i++) { if (new Date(messageThreads.get(i).getTime()).getYear() == new Date().getYear() && new Date(messageThreads.get(i).getTime()).getMonth() == new Date().getMonth() && new Date(messageThreads.get(i).getTime()).getDate() == new Date().getDate()) { if (category.getText() == null) { category.setIndex(i); category.setText("Today"); } itemCount++; } else { if (itemCount != 0 && "Today".equals(category.getText())) { category.setItemCount(itemCount); categories.add(category); itemCount = 0; category = new Category(); } Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); if ((new Date(messageThreads.get(i).getTime()).getYear() == cal.getTime().getYear()) && (new Date(messageThreads.get(i).getTime()).getMonth() == cal.getTime().getMonth()) && (new Date(messageThreads.get(i).getTime()).getDate() == cal.getTime().getDate())) { if (category.getText() == null) { category.setIndex(i); category.setText("Yesterday"); } itemCount++; } else { if (itemCount != 0 && "Yesterday".equals(category.getText())) { category.setItemCount(itemCount); categories.add(category); itemCount = 0; category = new Category(); } if (new Date().getTime() - new Date(messageThreads.get(i).getTime()).getTime() < week) { if (category.getText() == null) { category.setIndex(i); category.setText("Earlier this week"); } itemCount++; } else { if (itemCount != 0 && "Earlier this week".equals(category.getText())) { category.setItemCount(itemCount); categories.add(category); itemCount = 0; category = new Category(); } if (new Date().getTime() - new Date(messageThreads.get(i).getTime()).getTime() < month) { if (category.getText() == null) { category.setIndex(i); category.setText("Earlier this month"); } itemCount++; } else { if (itemCount != 0 && "Earlier this month".equals(category.getText())) { category.setItemCount(itemCount); categories.add(category); itemCount = 0; category = new Category(); } if (new Date().getTime() - new Date(messageThreads.get(i).getTime()).getTime() > month) { if (category.getText() == null) { category.setIndex(i); category.setText("More than month"); category.setItemCount(itemCount + messageThreads.size() - i); categories.add(category); return 1; } itemCount++; } } } } } } return 0; }