Мне нужно написать запрос для извлечения значений из двух столбцов, используя greenDao
Моя таблица имеет следующую структуру
То, что я хочу, - это список (Основной список), который содержит ненулевое значение PINNED_TIME, а IS_CHAT_PIN равно true и MSG_TIME - все это в порядке убывания. На данный момент я создал два списка: один для списка времени сообщения, а другой для закрепленного списка времени.
ниже приведен список времени, основанный на времени сообщения
List<Recent> msgTimeBasedList = Application.getDaoSession().getRecentDao().queryBuilder()
.where(RecentDao.Properties.IsChatPinned.eq(false))
.orderDesc(RecentDao.Properties.MsgTime).list();
ниже приведен список на основе закрепленного времени
List<Recent> pinnedTimeBasedList = Application.getDaoSession().getRecentDao().queryBuilder()
.where(RecentDao.Properties.PinnedTime.isNotNull())
.orderDesc(RecentDao.Properties.PinnedTime).list();
, после этого я создал еще один файл с именем main list , добавил эти два списка в этот основной список и возвратил их. этот основной список
List<Recent> mainList = new ArrayList<>();
mainList.addAll(pinnedTimeBasedList);
mainList.addAll(msgTimeBasedList);
return mainList;
И вот как я настраиваю адаптер
adapterRecent.setRecentChats(recentChats)
это вызывается в onResume (). RecentChats содержит основной список
, но я получаю повторяющиеся значения из списка, и закрепленные чаты находятся не в правильном положении, а закрепленные чаты также не в правильном положении. Если я закрепил чат, значения IS_CHAT_PIN становятся равными 1, а значение PINNED_TIME становится текущим временем, а если я открепляю чат, IS_CHAT_PIN становится равным 0, а значение PINNED_TIME становится пустым. Теперь я хочу, чтобы закрепленный чат переместился в верхнюю часть списка независимо от времени сообщения , а когда чат не закреплен чат должен переставиться на свою позицию согласно времени сообщения