#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(Loaderloader, Cursor data) { adapter.changeCursor(data); } В программе выводится список сообщений. По клику на любой элемент списка, пользователь переходит в чат. И сейчас, собственно, назрела идея выводить не весь список сообщений, а список диалогов - только последнее для каждого собеседника. Собственно вопрос, как это лучше реализовать? Можно ли составить выборку последнее сообщение по дате для каждого уникального id собеседника, если количество и id собеседников заранее неизвестны? А ведь еще при поступлении нового сообщения, нужный элемент списка нужно удалить и добавить обновленный вверху списка. Как это принято делать? Очень не хочется изобретать пяти колесный велосипед, задача вроде типовая.
Ответы
Ответ 1
view - представления, очень хорошо работают, обновляются сами при записи нужных данных в основные таблицы сделай на окно списка диалогов view c сортировкой по дате, и на экран конкретного диалога тоже делай view, можно даже временный.
Комментариев нет:
Отправить комментарий