#java #android #sqlite #listview #cursoradaper
Имеется база данных sqlite, содержащая таблицу с сообщениями, которая периодически
синхронизируется с глобальной базой данных.
Из нее производится выборка
Cursor loadInBackground(){
Log.d("[MESSAGES QUERY]", MessagesTable.STATUS + sortByStatus
+ " AND " + MessagesTable.DATE + sortByDate);
return helper.getReadableDatabase().query(MessagesTable.TABLE_NAME,
new String[]{MessagesTable.ID, MessagesTable.BODY,
MessagesTable.DATE,
MessagesTable.FROM, MessagesTable.TO,
MessagesTable.STATUS},
MessagesTable.STATUS + sortByStatus + " AND "
+ MessagesTable.DATE + sortByDate,
null, null, null, null);
и загружается в ListView с помощью CursorAdapter
@Override
public void onLoadFinished(Loader loader, Cursor data) {
adapter.changeCursor(data);
}
В программе выводится список сообщений. По клику на любой элемент списка, пользователь
переходит в чат.
И сейчас, собственно, назрела идея выводить не весь список сообщений, а список диалогов
- только последнее для каждого собеседника.
Собственно вопрос, как это лучше реализовать?
Можно ли составить выборку последнее сообщение по дате для каждого уникального id
собеседника, если количество и id собеседников заранее неизвестны? А ведь еще при поступлении
нового сообщения, нужный элемент списка нужно удалить и добавить обновленный вверху
списка. Как это принято делать? Очень не хочется изобретать пяти колесный велосипед,
задача вроде типовая.
Ответы
Ответ 1
view - представления, очень хорошо работают, обновляются сами при записи нужных данных в основные таблицы сделай на окно списка диалогов view c сортировкой по дате, и на экран конкретного диалога тоже делай view, можно даже временный.
Комментариев нет:
Отправить комментарий