Room Database сложный фильтр для выборки

181
07 апреля 2021, 00:20

Всем привет! Ищу помощь у тех, кто сталкивался с подобной задачей или у тех, кто знает, как ее решить.

Суть задачи: я пишу приложение для себя наподобие записной книжки, в которой хочу хранить своих клиентов (номера телефонов, адреса и прочее). Всю информацию храню в базе данных SQLite при помощи Room Database. Так вот предположим, что у меня уже есть данные в этой таблице с клиентами и я хотел бы сделать к ним фильтр -- это будет диалоговое окно с двумя Spinner:

  1. Один Spinner содержит варианты выборки: все клиенты, за сегодня, за неделю, за месяц
  2. Второй Spinner содержит варианты сортировки: по имени, по дате добавления, срочные, и не срочные

Теперь самое главное! Как в Dao можно прописать такой метод, который бы фильтровал по таким параметрам? Мне в голову приходила мысль создавать много методов для каждого варианта сортировки и выборки, но я понимаю что это тот еще костыль. Заранее спасибо за помощь!

Answer 1

Сам задавался таким вопросом и другого решения я пока-что не нашёл. Была мысля пробовать передавать эти параметры через параметры метода, например:

@Query("SELEC * FROM contact :where :orderBy")
fun getListContacts(where: String = "", orderBy: String = "") : List<Contact>
where = "WHERE date > время от нуля за сегодня"
orderBy = "ORDER BY name ASC"

И так далее, но метод ещё не испытан, времени не было потестить, возможно даже не рабочий или где-то ошибся, писал на коленке. Как проверите отпишитесь.

Ну и второй составалять на каждую выборку по первому пункту свой запрос, а сортировать уже по месту.

P.S. вот эта конструкция: where: String = "" - это из Kotlin-а, позволяющая не задавать параметры при вызове функции.

READ ALSO
Обновление данных в RecyclerView с помощью RecyclerView.OnScrollListener

Обновление данных в RecyclerView с помощью RecyclerView.OnScrollListener

Проблема в том, что при выполнение нового запроса на сервер после прокручивания у меня список полностью обновляется, необходимо, чтобы он добавлялся...

128
Как именно работает метод read() у InputStream?

Как именно работает метод read() у InputStream?

Как же все-таки устроена работа метода read():

126
Подскажите как реализовать сервер для Android приложений

Подскажите как реализовать сервер для Android приложений

Я разрабатываю приложение под Android и хотел бы узнать как реализовать сервер который бы принимал данные и сохранял их в базу данных желательно...

122
Запись матрицы в csv файл на java

Запись матрицы в csv файл на java

Основное задание заключается в том, что б поменять местами столбики в csv файлеЯ выгрузила их оттуда в матрицу, написала цикл с заменой столбиков,...

126