У меня есть приложение для Android, которое отображает пользовательские SMS в формате цепочки разговоров; то есть для каждого элемента отображается отображаемое имя (если доступно), фотография контакта, MSISDN и отметка времени / тизер для самого последнего входящего или исходящего сообщения в разговоре.
Проблема в том, что на самом деле это не так просто сделать в Android. Запрос потоков напрямую возвращает ограниченную информацию, поэтому временные метки, например, недоступны. Запрос всех сообщений вернет все данные, которые я хочу, но затем мне придется отсортировать все это, найти самое последнее сообщение, итоговый размер разговора и так далее. Как дополнительное осложнение, черновики являются нестандартными (не стандартными для всех остальных сообщений), а также должны быть добавлены в смесь.
Этот последний подход привел к чудовищному подходу, использующему последний, при котором я беру все, сортирую все, что видит, как данные переходят из курсора в HashMap в список, и, наконец, адаптер используется для отображения. Это, естественно, приводит к серьезной проблеме с производительностью, когда пользователю приходится ждать несколько секунд, пока экран не обновится.
Итак, у меня вопрос: есть ли более эффективный способ сделать это, например, запросить сообщения с использованием необработанного SQL, который не приведет к такому значительному снижению производительности?