Разделите массив на две части в соответствии с фильтром - PullRequest
0 голосов
/ 31 августа 2018

Мое приложение, продающее книги, когда пользователь покупает книгу, файл pdf загружается во внутреннюю память телефона. У меня есть две категории книг, и имя файла PDF содержит код для его идентификации.

Из всех файлов, купленных и, следовательно, загруженных, у меня есть следующий код для получения массива всех купленных книг:

   val purchasedBooks: ArrayList<String> = ArrayList()

    val directoryFiles = context?.filesDir
    val files = directoryFiles?.listFiles()


    if (files != null) {
        for (aFile in files) {
            purchasedBooks.add(aFile.name)
        }
    }

Этот код возвращает меня в purchasedBooks:

[ssbook1.pdf, ssbook2.pdf, ssbook3.pdf, aabook1.pdf, aabook2.pdf]

Мне нужно, чтобы это было так:

val ssbooks = [ssbook1, ssbook2, ssbook3] // without .pdf
val aabooks = [aabook1, aabook2]

Чтобы затем показать его в программе утилизации, по разделам:

________________
MY SS BOOK
________________
ssbook1
----------------
ssbook2
----------------
ssbook3
________________
MY AABOOK
________________
aabook1
----------------
aabook2

Любой совет буду благодарен.

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Вы можете использовать веселье partition

/ ** * Разбивает исходный массив на пару списков, * где первый список содержит элементы, для которых [предикат] дал true, * в то время как second список содержит элементы, для которых [предикат] дал false. * /

0 голосов
/ 31 августа 2018

Надеюсь, что приведенный ниже код поможет.

val arr = listOf("ssbook1.pdf", "ssbook2.pdf", "ssbook3.pdf", "aabook1.pdf", "aabook2.pdf")
val result = arr.map {it.substringBefore(".pdf")}
                .groupBy {it.contains("ssbook")}
                .map { it.value}
println(result) // [[ssbook1, ssbook2, ssbook3], [aabook1, aabook2]]

Вы можете использовать результирующий 2D-массив для отображения сечений в режиме рециркуляции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...