Как получить значения из запросов с двумя аргументами, используя зеленый Дао? - PullRequest
0 голосов
/ 28 марта 2020

Мне нужно написать запрос для извлечения значений из двух столбцов, используя greenDao

Моя таблица имеет следующую структуру

data base structure

То, что я хочу, - это список (Основной список), который содержит ненулевое значение 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 становится пустым. Теперь я хочу, чтобы закрепленный чат переместился в верхнюю часть списка независимо от времени сообщения , а когда чат не закреплен чат должен переставиться на свою позицию согласно времени сообщения

...