Как запустить все числа arrayLista в статическую переменную int через знак "|" (или)?

У меня приложение русско-английский словарь, в котором слова поделены на 4 категории (под номерами 0, 1, 2 и 3). В настройках user может отключать какие-то из них, и мне нужно чтобы в этом случае слова с отключенной категорией в процессе обучения не появлялись из базы. То есть чтобы Метод, описнный ниже, вызывал только включенные категории.

In Dao:

@Query("SELECT * FROM word_table WHERE category = :category ORDER BY RANDOM() LIMIT 4")
Single<List<Word>> get4words(int category);

Затем в Repository я обзначаю цифру для категории:

public static final int CATEGORY = 0 | 1 | 2 | 3; 

И заношу ее в метод, который вызывает список слов из словаря:

m4words = mWordDao.get4words(CATEGORY);

... Как я понимаю, нужен наверно аррайЛист с цифрами (чтобы отключая категорию пользователь удалял соот. цифру из аррайЛиста), а потом все значения этого листа запускать в статическую переменную int CATEGORY через знак "|" (или). Но как это сделать?


Ответы (1 шт):

Автор решения: Aziz Umarov

Конечно вариантов можно придумать несколько. Я бы предложил поскольку у вас всего 4 категории то комбинаций всего 16 штук. Так что на любые ваши комбинации достаточно 4х бит. И не нужно в этом случае никакого массива лиш правильно разбить переменную в sql чтоб узнать включение той или иной категории.

0 - 0000 все выключены

1 - 0001 включена 1 я

2 - 0010 включена 2 я

3 - 0011 включена 1 и 2 я

....

15 - 1111 включены все 4

→ Ссылка