android - 根据过滤器将一个数组一分为二

标签 android arrays kotlin

我的应用卖书,当用户买书时,一个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]]

您可以使用结果二维数组在回收站 View 中显示部分

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

相关文章:

java - 在循环外访问java中的数组元素

android - “Check Our other Apps”按钮重定向到发布者其他应用程序

android - 如何解决错误 "LifecycleOwners must call register before they are STARTED"

android - 有什么方法可以告诉 Android 操作系统不要为 "Internet"使用连接的 Wi-Fi 网络?

android - onContextItemSelected 似乎没有被调用

python - 快速、干净地查找 Numpy 数组索引的方法

android - java.lang.IllegalArgumentException : Illegal character (U+0) in writing xml file android 异常

Android ==> 登录而不进入 Debug模式?

Android SlidingDrawer 不禁用按钮 'under' 抽屉

javascript - 检查一个js对象的属性是否除了3以外都是null