@hypnogaja

Как правильно отфильтровать список объектов в соответствии с другим списком?

Всем привет )
У меня есть простой список бэкграундов который нужно отфильтровать в соответствии с активными тегами
Я использую конструкцию с any, но список всегда пуст, как правильно получить результат фильтрации?

val backgrounds: List<ArticleViewPagerScreen> = listOf(
        BackgroundViewPagerScreen(
            headerRes = R.string.header1,
            dateRes = R.string.date1,
            textRes = R.string.text1,
            drawableRes = R.color.color1,
            tagList = listOf(ArticleTag.Yellow)
        ),
        BackgroundViewPagerScreen(
            headerRes = R.string.header2,
            dateRes = R.string.date2,
            textRes = R.string.text2,
            drawableRes = R.color.color2,
            tagList = listOf(ArticleTag.Orange)
        ),
        BackgroundViewPagerScreen(
            headerRes = R.string.header3,
            dateRes = R.string.date3,
            textRes = R.string.text3,
            drawableRes = R.color.color3,
            tagList = listOf(ArticleTag.Blue)
        )


Есть список с текущими тегами:
var currentTags: List<BackgroundTag> = listOf(
        BackgroundTag.Yellow,
        BackgroundTag.Blue
)


Для фильтрации я использую выражение:
val sortedBackgrounds: List<BackgroundViewPagerScreen> =
            backgrounds.filter { p -> backgrounds.any{ p.tagList == currentTags}}


Заранее спасибо
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Неправильная логика. listOf(ArticleTag.Blue) всегда не равен listOf(BackgroundTag.Yellow,BackgroundTag.Blue).
Не уверен, что правильно понял требования, но похоже, что нужно проверять, что все теги из p.tagList содержатся в currentTags:
backgrounds.filter { p -> currentTags.containsAll(p.tagList) }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы