我的应用程序销售书籍,当用户购买书籍时,会将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]

然后按部分在recyclerView中显示它:
________________
MY SS BOOK
________________
ssbook1
----------------
ssbook2
----------------
ssbook3
________________
MY AABOOK
________________
aabook1
----------------
aabook2

任何建议,我将不胜感激。

最佳答案

希望下面的代码有所帮助。

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数组在回收站 View 中显示部分

关于android - 根据过滤器将数组分为两个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52108479/

10-11 20:02
查看更多